{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "name": "EvoloPy.ipynb",
      "provenance": [],
      "collapsed_sections": [],
      "include_colab_link": true
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "widgets": {
      "application/vnd.jupyter.widget-state+json": {
        "3a32992a7be9497c949bc06a2e838a1d": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "DropdownModel",
          "state": {
            "_options_labels": [
              "2020-05-15-13-41-36"
            ],
            "_view_name": "DropdownView",
            "style": "IPY_MODEL_3633a55c7efe490784594bad5694800d",
            "_dom_classes": [],
            "description": "Select folder:",
            "_model_name": "DropdownModel",
            "index": 0,
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "disabled": false,
            "_view_module_version": "1.5.0",
            "description_tooltip": null,
            "_model_module": "@jupyter-widgets/controls",
            "layout": "IPY_MODEL_75acaa0a501744f7817d0864462e8a7e"
          }
        },
        "3633a55c7efe490784594bad5694800d": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_view_name": "StyleView",
            "_model_name": "DescriptionStyleModel",
            "description_width": "",
            "_view_module": "@jupyter-widgets/base",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.2.0",
            "_model_module": "@jupyter-widgets/controls"
          }
        },
        "75acaa0a501744f7817d0864462e8a7e": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          }
        },
        "e4a83005aaa043d48540b6f4202070e5": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "DropdownModel",
          "state": {
            "_options_labels": [
              "convergence-F4.png",
              "convergence-F3.png"
            ],
            "_view_name": "DropdownView",
            "style": "IPY_MODEL_641b5f943c8e419583baaf02485acffb",
            "_dom_classes": [],
            "description": "Select plot:",
            "_model_name": "DropdownModel",
            "index": 0,
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "disabled": false,
            "_view_module_version": "1.5.0",
            "description_tooltip": null,
            "_model_module": "@jupyter-widgets/controls",
            "layout": "IPY_MODEL_45a8720657764f1585859c3d3dae8745"
          }
        },
        "641b5f943c8e419583baaf02485acffb": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_view_name": "StyleView",
            "_model_name": "DescriptionStyleModel",
            "description_width": "",
            "_view_module": "@jupyter-widgets/base",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.2.0",
            "_model_module": "@jupyter-widgets/controls"
          }
        },
        "45a8720657764f1585859c3d3dae8745": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          }
        },
        "91e278780d5b4dcda11e832e971044f3": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "DropdownModel",
          "state": {
            "_options_labels": [
              "boxplot-F3.png",
              "boxplot-F4.png"
            ],
            "_view_name": "DropdownView",
            "style": "IPY_MODEL_c1b161beed5c4b128b06a09d7a5be2fe",
            "_dom_classes": [],
            "description": "Select plot:",
            "_model_name": "DropdownModel",
            "index": 1,
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "disabled": false,
            "_view_module_version": "1.5.0",
            "description_tooltip": null,
            "_model_module": "@jupyter-widgets/controls",
            "layout": "IPY_MODEL_b08d8ae9147047acac84d9e52bfee64f"
          }
        },
        "c1b161beed5c4b128b06a09d7a5be2fe": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_view_name": "StyleView",
            "_model_name": "DescriptionStyleModel",
            "description_width": "",
            "_view_module": "@jupyter-widgets/base",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.2.0",
            "_model_module": "@jupyter-widgets/controls"
          }
        },
        "b08d8ae9147047acac84d9e52bfee64f": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          }
        }
      }
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "view-in-github",
        "colab_type": "text"
      },
      "source": [
        "<a href=\"https://colab.research.google.com/github/7ossam81/EvoloPy/blob/master/EvoloPy.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "IiNG95DSmRmt",
        "colab_type": "text"
      },
      "source": [
        "<h1>EvoloPy</h1>\n",
        "An open source nature-inspired optimization toolbox for global optimization in Python"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "hKzyadcdm6yw",
        "colab_type": "text"
      },
      "source": [
        "The EvoloPy toolbox provides classical and recent nature-inspired metaheuristic for the global optimization. The list of optimizers that have been implemented includes Particle Swarm Optimization (PSO), Multi-Verse Optimizer (MVO), Grey Wolf Optimizer (GWO), and Moth Flame Optimization (MFO)."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "2zQnPqDUujil",
        "colab_type": "text"
      },
      "source": [
        "The full list of implemented optimizers is available here https://github.com/7ossam81/EvoloPy/wiki/List-of-optimizers"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "ehxW3t0puwpm",
        "colab_type": "text"
      },
      "source": [
        "<h2>Features</h2>"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "TufeO-Rturq8",
        "colab_type": "text"
      },
      "source": [
        "*   Fourteen nature-inspired metaheuristic optimizers are implemented.\n",
        "*   The implimentation uses the fast array manipulation using [NumPy] (http://www.numpy.org/).\n",
        "*   Matrix support using [SciPy's] (https://www.scipy.org/) package.\n",
        "*   More optimizers are comming soon"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "oG2TRdx-vf8m",
        "colab_type": "text"
      },
      "source": [
        "<h2>Installation</h2>"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "_XpMUOZNvi9H",
        "colab_type": "text"
      },
      "source": [
        "Python 3.xx is required."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "f_PVAZC6v7px",
        "colab_type": "text"
      },
      "source": [
        "<h2>GitHub</h2>"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "aW_66ovkv2ev",
        "colab_type": "text"
      },
      "source": [
        "Clone the Git repository from GitHub:\n",
        "git clone https://github.com/7ossam81/EvoloPy.git"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "QgrmE2wEyC_X",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "!git clone https://github.com/7ossam81/EvoloPy.git"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "_yVUbtjcyiZR",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "# Change working directory\n",
        "import os\n",
        "os.chdir(\"EvoloPy/\")"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "S4j-t-nXxaM7",
        "colab_type": "text"
      },
      "source": [
        "<h2>Install Packages</h2>"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "-mG8vIuIW1n8",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "#Install NumPy, SciPy, sklearn, pandas, and matplotlib\n",
        "!pip install -r requirements.txt"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "fEon-wGyZuq4",
        "colab_type": "text"
      },
      "source": [
        "<h2>User Preferences</h2>"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "cFF9ioDfyppV",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "# Select optimizers\n",
        "# \"SSA\",\"PSO\",\"GA\",\"BAT\",\"FFA\",\"GWO\",\"WOA\",\"MVO\",\"MFO\",\"CS\",\"HHO\",\"SCA\",\"JAYA\",\"DE\"\n",
        "optimizer=[\"SSA\",\"PSO\",\"GWO\"]"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "SuWo96bB6ohe",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "# Select benchmark function\"\n",
        "# \"F1\",\"F2\",\"F3\",\"F4\",\"F5\",\"F6\",\"F7\",\"F8\",\"F9\",\"F10\",\"F11\",\"F12\",\"F13\",\"F14\",\"F15\",\"F16\",\"F17\",\"F18\",\"F19\"\n",
        "objectivefunc=[\"F3\",\"F4\"] "
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "CQyWvdS3Ipgt",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "# Select number of repetitions for each experiment. \n",
        "# To obtain meaningful statistical results, usually 30 independent runs are executed for each algorithm.\n",
        "NumOfRuns=3"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "2djrIRh26sKB",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "# Select general parameters for all optimizers (population size, number of iterations) ....\n",
        "params = {'PopulationSize' : 30, 'Iterations' : 50}"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "aJb075Np62GM",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "#Choose whether to Export the results in different formats\n",
        "export_flags = {'Export_avg':True, 'Export_details':True, \n",
        "'Export_convergence':True, 'Export_boxplot':True}"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "KAgXf1QkZD7X",
        "colab_type": "text"
      },
      "source": [
        "<h2>Run Framework</h2>"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "APzDcxiwI8A2",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "# Run EvoCluster\n",
        "from optimizer import run\n",
        "run(optimizer, objectivefunc, NumOfRuns, params, export_flags)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "1mB9AVhQuwbH",
        "colab_type": "text"
      },
      "source": [
        "<h2>Results Files and Plots</h2>"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "642Oh7QUpRhL",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "#import some useful packages to view the results' files in colab\n",
        "import pandas as pd\n",
        "from IPython.display import Image\n",
        "import os\n",
        "import datetime\n",
        "import ipywidgets as widgets"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "UOLHaWwBRf7D",
        "colab_type": "code",
        "outputId": "4423bcec-4cd7-4155-d923-5a6e7d731a9a",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 49,
          "referenced_widgets": [
            "3a32992a7be9497c949bc06a2e838a1d",
            "3633a55c7efe490784594bad5694800d",
            "75acaa0a501744f7817d0864462e8a7e"
          ]
        }
      },
      "source": [
        "#Select the experiments folder\n",
        "foldernames = [filename for filename in os.listdir() if filename.startswith(str(datetime.datetime.now().year))]\n",
        "drop_folder = widgets.Dropdown(options=foldernames, description='Select folder:')\n",
        "drop_folder"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "3a32992a7be9497c949bc06a2e838a1d",
              "version_minor": 0,
              "version_major": 2
            },
            "text/plain": [
              "Dropdown(description='Select folder:', options=('2020-05-15-13-41-36',), value='2020-05-15-13-41-36')"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "xm8UuPRA6uIb",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "#Get the selected folder\n",
        "foldername = drop_folder.value"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "qjNFP9NqvNV3",
        "colab_type": "text"
      },
      "source": [
        "<h4>Average Results File</h4>"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "U_PNBYEYp2cn",
        "colab_type": "code",
        "outputId": "d6fcb639-8d52-400c-fced-468475b9c789",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 193
        }
      },
      "source": [
        "#Show the average results file\n",
        "filename = foldername +'/experiment.csv' \n",
        "df = pd.read_csv(filename)\n",
        "df.head(4)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>Optimizer</th>\n",
              "      <th>objfname</th>\n",
              "      <th>ExecutionTime</th>\n",
              "      <th>Iter1</th>\n",
              "      <th>Iter2</th>\n",
              "      <th>Iter3</th>\n",
              "      <th>Iter4</th>\n",
              "      <th>Iter5</th>\n",
              "      <th>Iter6</th>\n",
              "      <th>Iter7</th>\n",
              "      <th>Iter8</th>\n",
              "      <th>Iter9</th>\n",
              "      <th>Iter10</th>\n",
              "      <th>Iter11</th>\n",
              "      <th>Iter12</th>\n",
              "      <th>Iter13</th>\n",
              "      <th>Iter14</th>\n",
              "      <th>Iter15</th>\n",
              "      <th>Iter16</th>\n",
              "      <th>Iter17</th>\n",
              "      <th>Iter18</th>\n",
              "      <th>Iter19</th>\n",
              "      <th>Iter20</th>\n",
              "      <th>Iter21</th>\n",
              "      <th>Iter22</th>\n",
              "      <th>Iter23</th>\n",
              "      <th>Iter24</th>\n",
              "      <th>Iter25</th>\n",
              "      <th>Iter26</th>\n",
              "      <th>Iter27</th>\n",
              "      <th>Iter28</th>\n",
              "      <th>Iter29</th>\n",
              "      <th>Iter30</th>\n",
              "      <th>Iter31</th>\n",
              "      <th>Iter32</th>\n",
              "      <th>Iter33</th>\n",
              "      <th>Iter34</th>\n",
              "      <th>Iter35</th>\n",
              "      <th>Iter36</th>\n",
              "      <th>Iter37</th>\n",
              "      <th>Iter38</th>\n",
              "      <th>Iter39</th>\n",
              "      <th>Iter40</th>\n",
              "      <th>Iter41</th>\n",
              "      <th>Iter42</th>\n",
              "      <th>Iter43</th>\n",
              "      <th>Iter44</th>\n",
              "      <th>Iter45</th>\n",
              "      <th>Iter46</th>\n",
              "      <th>Iter47</th>\n",
              "      <th>Iter48</th>\n",
              "      <th>Iter49</th>\n",
              "      <th>Iter50</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>SSA</td>\n",
              "      <td>F3</td>\n",
              "      <td>1.75</td>\n",
              "      <td>0.00</td>\n",
              "      <td>59072.60</td>\n",
              "      <td>28958.31</td>\n",
              "      <td>23004.41</td>\n",
              "      <td>22427.61</td>\n",
              "      <td>20708.24</td>\n",
              "      <td>20708.24</td>\n",
              "      <td>20156.02</td>\n",
              "      <td>19199.38</td>\n",
              "      <td>18967.85</td>\n",
              "      <td>18967.85</td>\n",
              "      <td>18967.85</td>\n",
              "      <td>18967.85</td>\n",
              "      <td>18967.85</td>\n",
              "      <td>18967.85</td>\n",
              "      <td>18967.85</td>\n",
              "      <td>18967.85</td>\n",
              "      <td>15429.68</td>\n",
              "      <td>15429.68</td>\n",
              "      <td>12987.78</td>\n",
              "      <td>11772.82</td>\n",
              "      <td>9815.49</td>\n",
              "      <td>8419.98</td>\n",
              "      <td>7635.83</td>\n",
              "      <td>6981.20</td>\n",
              "      <td>6300.40</td>\n",
              "      <td>5884.88</td>\n",
              "      <td>5454.59</td>\n",
              "      <td>5278.25</td>\n",
              "      <td>5104.20</td>\n",
              "      <td>4997.53</td>\n",
              "      <td>4916.33</td>\n",
              "      <td>4861.94</td>\n",
              "      <td>4814.55</td>\n",
              "      <td>4782.65</td>\n",
              "      <td>4769.07</td>\n",
              "      <td>4759.84</td>\n",
              "      <td>4752.96</td>\n",
              "      <td>4747.99</td>\n",
              "      <td>4745.71</td>\n",
              "      <td>4744.22</td>\n",
              "      <td>4743.26</td>\n",
              "      <td>4742.71</td>\n",
              "      <td>4742.43</td>\n",
              "      <td>4742.26</td>\n",
              "      <td>4742.16</td>\n",
              "      <td>4742.11</td>\n",
              "      <td>4742.08</td>\n",
              "      <td>4742.06</td>\n",
              "      <td>4742.06</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>SSA</td>\n",
              "      <td>F4</td>\n",
              "      <td>1.36</td>\n",
              "      <td>0.00</td>\n",
              "      <td>53.51</td>\n",
              "      <td>40.74</td>\n",
              "      <td>34.87</td>\n",
              "      <td>31.09</td>\n",
              "      <td>29.46</td>\n",
              "      <td>28.24</td>\n",
              "      <td>27.21</td>\n",
              "      <td>26.89</td>\n",
              "      <td>26.59</td>\n",
              "      <td>26.29</td>\n",
              "      <td>25.87</td>\n",
              "      <td>25.42</td>\n",
              "      <td>25.04</td>\n",
              "      <td>24.71</td>\n",
              "      <td>24.69</td>\n",
              "      <td>24.69</td>\n",
              "      <td>24.69</td>\n",
              "      <td>24.69</td>\n",
              "      <td>24.47</td>\n",
              "      <td>23.57</td>\n",
              "      <td>23.31</td>\n",
              "      <td>22.52</td>\n",
              "      <td>22.52</td>\n",
              "      <td>22.04</td>\n",
              "      <td>21.53</td>\n",
              "      <td>20.86</td>\n",
              "      <td>20.63</td>\n",
              "      <td>20.17</td>\n",
              "      <td>19.75</td>\n",
              "      <td>19.47</td>\n",
              "      <td>19.28</td>\n",
              "      <td>19.14</td>\n",
              "      <td>19.10</td>\n",
              "      <td>19.01</td>\n",
              "      <td>18.97</td>\n",
              "      <td>18.94</td>\n",
              "      <td>18.93</td>\n",
              "      <td>18.92</td>\n",
              "      <td>18.92</td>\n",
              "      <td>18.91</td>\n",
              "      <td>18.91</td>\n",
              "      <td>18.91</td>\n",
              "      <td>18.91</td>\n",
              "      <td>18.91</td>\n",
              "      <td>18.91</td>\n",
              "      <td>18.91</td>\n",
              "      <td>18.91</td>\n",
              "      <td>18.91</td>\n",
              "      <td>18.91</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>PSO</td>\n",
              "      <td>F3</td>\n",
              "      <td>1.22</td>\n",
              "      <td>183637.64</td>\n",
              "      <td>180863.76</td>\n",
              "      <td>154832.61</td>\n",
              "      <td>131202.72</td>\n",
              "      <td>103560.22</td>\n",
              "      <td>86242.08</td>\n",
              "      <td>79219.21</td>\n",
              "      <td>73716.05</td>\n",
              "      <td>48966.69</td>\n",
              "      <td>34182.34</td>\n",
              "      <td>27478.13</td>\n",
              "      <td>26321.51</td>\n",
              "      <td>23063.18</td>\n",
              "      <td>18518.34</td>\n",
              "      <td>17158.39</td>\n",
              "      <td>14448.26</td>\n",
              "      <td>13882.05</td>\n",
              "      <td>12663.19</td>\n",
              "      <td>11345.10</td>\n",
              "      <td>10531.04</td>\n",
              "      <td>9172.04</td>\n",
              "      <td>8471.73</td>\n",
              "      <td>7901.27</td>\n",
              "      <td>7320.39</td>\n",
              "      <td>6875.68</td>\n",
              "      <td>6444.70</td>\n",
              "      <td>6099.12</td>\n",
              "      <td>5818.16</td>\n",
              "      <td>5681.57</td>\n",
              "      <td>5264.52</td>\n",
              "      <td>5011.52</td>\n",
              "      <td>4766.50</td>\n",
              "      <td>4607.50</td>\n",
              "      <td>4566.76</td>\n",
              "      <td>4530.85</td>\n",
              "      <td>4343.02</td>\n",
              "      <td>4228.02</td>\n",
              "      <td>4038.99</td>\n",
              "      <td>3884.79</td>\n",
              "      <td>3586.49</td>\n",
              "      <td>3474.49</td>\n",
              "      <td>3334.95</td>\n",
              "      <td>3292.48</td>\n",
              "      <td>3210.30</td>\n",
              "      <td>3075.05</td>\n",
              "      <td>2921.85</td>\n",
              "      <td>2867.09</td>\n",
              "      <td>2759.10</td>\n",
              "      <td>2711.19</td>\n",
              "      <td>2668.48</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>PSO</td>\n",
              "      <td>F4</td>\n",
              "      <td>0.97</td>\n",
              "      <td>89.68</td>\n",
              "      <td>85.17</td>\n",
              "      <td>80.06</td>\n",
              "      <td>75.35</td>\n",
              "      <td>70.27</td>\n",
              "      <td>65.05</td>\n",
              "      <td>59.57</td>\n",
              "      <td>54.01</td>\n",
              "      <td>48.85</td>\n",
              "      <td>43.08</td>\n",
              "      <td>37.89</td>\n",
              "      <td>33.47</td>\n",
              "      <td>29.00</td>\n",
              "      <td>25.94</td>\n",
              "      <td>23.26</td>\n",
              "      <td>21.81</td>\n",
              "      <td>19.80</td>\n",
              "      <td>18.78</td>\n",
              "      <td>18.07</td>\n",
              "      <td>17.69</td>\n",
              "      <td>17.61</td>\n",
              "      <td>16.08</td>\n",
              "      <td>15.82</td>\n",
              "      <td>15.54</td>\n",
              "      <td>15.19</td>\n",
              "      <td>14.98</td>\n",
              "      <td>14.82</td>\n",
              "      <td>14.65</td>\n",
              "      <td>14.14</td>\n",
              "      <td>13.91</td>\n",
              "      <td>13.75</td>\n",
              "      <td>13.67</td>\n",
              "      <td>13.31</td>\n",
              "      <td>13.10</td>\n",
              "      <td>13.04</td>\n",
              "      <td>12.86</td>\n",
              "      <td>12.69</td>\n",
              "      <td>12.24</td>\n",
              "      <td>12.23</td>\n",
              "      <td>12.09</td>\n",
              "      <td>11.99</td>\n",
              "      <td>11.78</td>\n",
              "      <td>11.60</td>\n",
              "      <td>11.34</td>\n",
              "      <td>11.19</td>\n",
              "      <td>10.92</td>\n",
              "      <td>10.87</td>\n",
              "      <td>10.77</td>\n",
              "      <td>10.68</td>\n",
              "      <td>10.67</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "  Optimizer objfname  ExecutionTime  ...   Iter48   Iter49   Iter50\n",
              "0       SSA       F3           1.75  ...  4742.08  4742.06  4742.06\n",
              "1       SSA       F4           1.36  ...    18.91    18.91    18.91\n",
              "2       PSO       F3           1.22  ...  2759.10  2711.19  2668.48\n",
              "3       PSO       F4           0.97  ...    10.77    10.68    10.67\n",
              "\n",
              "[4 rows x 53 columns]"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 13
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "sXSfvROovXRc",
        "colab_type": "text"
      },
      "source": [
        "<h4>Detailed Results File</h4>"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "RXU4upcgqcX_",
        "colab_type": "code",
        "outputId": "9ecd8e8f-c243-417c-b0d1-f73c5f0072c8",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 441
        }
      },
      "source": [
        "#Show the detailed results file\n",
        "filename = foldername +'/experiment_details.csv' \n",
        "df = pd.read_csv(filename)\n",
        "df.head(12)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>Optimizer</th>\n",
              "      <th>objfname</th>\n",
              "      <th>ExecutionTime</th>\n",
              "      <th>Iter1</th>\n",
              "      <th>Iter2</th>\n",
              "      <th>Iter3</th>\n",
              "      <th>Iter4</th>\n",
              "      <th>Iter5</th>\n",
              "      <th>Iter6</th>\n",
              "      <th>Iter7</th>\n",
              "      <th>Iter8</th>\n",
              "      <th>Iter9</th>\n",
              "      <th>Iter10</th>\n",
              "      <th>Iter11</th>\n",
              "      <th>Iter12</th>\n",
              "      <th>Iter13</th>\n",
              "      <th>Iter14</th>\n",
              "      <th>Iter15</th>\n",
              "      <th>Iter16</th>\n",
              "      <th>Iter17</th>\n",
              "      <th>Iter18</th>\n",
              "      <th>Iter19</th>\n",
              "      <th>Iter20</th>\n",
              "      <th>Iter21</th>\n",
              "      <th>Iter22</th>\n",
              "      <th>Iter23</th>\n",
              "      <th>Iter24</th>\n",
              "      <th>Iter25</th>\n",
              "      <th>Iter26</th>\n",
              "      <th>Iter27</th>\n",
              "      <th>Iter28</th>\n",
              "      <th>Iter29</th>\n",
              "      <th>Iter30</th>\n",
              "      <th>Iter31</th>\n",
              "      <th>Iter32</th>\n",
              "      <th>Iter33</th>\n",
              "      <th>Iter34</th>\n",
              "      <th>Iter35</th>\n",
              "      <th>Iter36</th>\n",
              "      <th>Iter37</th>\n",
              "      <th>Iter38</th>\n",
              "      <th>Iter39</th>\n",
              "      <th>Iter40</th>\n",
              "      <th>Iter41</th>\n",
              "      <th>Iter42</th>\n",
              "      <th>Iter43</th>\n",
              "      <th>Iter44</th>\n",
              "      <th>Iter45</th>\n",
              "      <th>Iter46</th>\n",
              "      <th>Iter47</th>\n",
              "      <th>Iter48</th>\n",
              "      <th>Iter49</th>\n",
              "      <th>Iter50</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>SSA</td>\n",
              "      <td>F3</td>\n",
              "      <td>1.757159</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>52643.820906</td>\n",
              "      <td>24036.401595</td>\n",
              "      <td>24036.401595</td>\n",
              "      <td>24036.401595</td>\n",
              "      <td>19983.062814</td>\n",
              "      <td>19983.062814</td>\n",
              "      <td>19983.062814</td>\n",
              "      <td>19934.621105</td>\n",
              "      <td>19934.621105</td>\n",
              "      <td>19934.621105</td>\n",
              "      <td>19934.621105</td>\n",
              "      <td>19934.621105</td>\n",
              "      <td>19934.621105</td>\n",
              "      <td>19934.621105</td>\n",
              "      <td>19934.621105</td>\n",
              "      <td>19934.621105</td>\n",
              "      <td>19934.621105</td>\n",
              "      <td>19934.621105</td>\n",
              "      <td>13334.325205</td>\n",
              "      <td>10375.641527</td>\n",
              "      <td>6939.862321</td>\n",
              "      <td>6582.065724</td>\n",
              "      <td>6077.301506</td>\n",
              "      <td>5719.317051</td>\n",
              "      <td>5475.807663</td>\n",
              "      <td>5039.564618</td>\n",
              "      <td>4722.449697</td>\n",
              "      <td>4509.082372</td>\n",
              "      <td>4309.845908</td>\n",
              "      <td>4231.900781</td>\n",
              "      <td>4140.790512</td>\n",
              "      <td>4098.868838</td>\n",
              "      <td>4034.224966</td>\n",
              "      <td>4004.345816</td>\n",
              "      <td>3989.210803</td>\n",
              "      <td>3977.592955</td>\n",
              "      <td>3969.432062</td>\n",
              "      <td>3964.404508</td>\n",
              "      <td>3962.278918</td>\n",
              "      <td>3960.183382</td>\n",
              "      <td>3959.594379</td>\n",
              "      <td>3959.012079</td>\n",
              "      <td>3958.727074</td>\n",
              "      <td>3958.542068</td>\n",
              "      <td>3958.447762</td>\n",
              "      <td>3958.383038</td>\n",
              "      <td>3958.355427</td>\n",
              "      <td>3958.340907</td>\n",
              "      <td>3958.337686</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>SSA</td>\n",
              "      <td>F3</td>\n",
              "      <td>1.765435</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>81772.551480</td>\n",
              "      <td>42077.682686</td>\n",
              "      <td>33528.309386</td>\n",
              "      <td>33528.309386</td>\n",
              "      <td>33528.309386</td>\n",
              "      <td>33528.309386</td>\n",
              "      <td>33339.475319</td>\n",
              "      <td>31302.330551</td>\n",
              "      <td>30607.738419</td>\n",
              "      <td>30607.738419</td>\n",
              "      <td>30607.738419</td>\n",
              "      <td>30607.738419</td>\n",
              "      <td>30607.738419</td>\n",
              "      <td>30607.738419</td>\n",
              "      <td>30607.738419</td>\n",
              "      <td>30607.738419</td>\n",
              "      <td>19993.206964</td>\n",
              "      <td>19993.206964</td>\n",
              "      <td>19993.206964</td>\n",
              "      <td>19347.813994</td>\n",
              "      <td>18381.647190</td>\n",
              "      <td>14552.890782</td>\n",
              "      <td>13217.581789</td>\n",
              "      <td>11655.997940</td>\n",
              "      <td>10353.646206</td>\n",
              "      <td>9618.139021</td>\n",
              "      <td>8900.818595</td>\n",
              "      <td>8595.652212</td>\n",
              "      <td>8275.827790</td>\n",
              "      <td>8091.658115</td>\n",
              "      <td>7947.823888</td>\n",
              "      <td>7857.754972</td>\n",
              "      <td>7801.065453</td>\n",
              "      <td>7747.775136</td>\n",
              "      <td>7729.305578</td>\n",
              "      <td>7717.971491</td>\n",
              "      <td>7709.403452</td>\n",
              "      <td>7701.071818</td>\n",
              "      <td>7697.161561</td>\n",
              "      <td>7695.169681</td>\n",
              "      <td>7693.598177</td>\n",
              "      <td>7692.706369</td>\n",
              "      <td>7692.252333</td>\n",
              "      <td>7692.002018</td>\n",
              "      <td>7691.855101</td>\n",
              "      <td>7691.786464</td>\n",
              "      <td>7691.740762</td>\n",
              "      <td>7691.721228</td>\n",
              "      <td>7691.706882</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>SSA</td>\n",
              "      <td>F3</td>\n",
              "      <td>1.718634</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>42801.424577</td>\n",
              "      <td>20760.853578</td>\n",
              "      <td>11448.508274</td>\n",
              "      <td>9718.130345</td>\n",
              "      <td>8613.360341</td>\n",
              "      <td>8613.360341</td>\n",
              "      <td>7145.510879</td>\n",
              "      <td>6361.197995</td>\n",
              "      <td>6361.197995</td>\n",
              "      <td>6361.197995</td>\n",
              "      <td>6361.197995</td>\n",
              "      <td>6361.197995</td>\n",
              "      <td>6361.197995</td>\n",
              "      <td>6361.197995</td>\n",
              "      <td>6361.197995</td>\n",
              "      <td>6361.197995</td>\n",
              "      <td>6361.197995</td>\n",
              "      <td>6361.197995</td>\n",
              "      <td>5635.813877</td>\n",
              "      <td>5595.012494</td>\n",
              "      <td>4124.974623</td>\n",
              "      <td>4124.974623</td>\n",
              "      <td>3612.603490</td>\n",
              "      <td>3568.288281</td>\n",
              "      <td>3071.748392</td>\n",
              "      <td>2996.934424</td>\n",
              "      <td>2740.501042</td>\n",
              "      <td>2730.006176</td>\n",
              "      <td>2726.932276</td>\n",
              "      <td>2669.043669</td>\n",
              "      <td>2660.374966</td>\n",
              "      <td>2629.196836</td>\n",
              "      <td>2608.348509</td>\n",
              "      <td>2595.827449</td>\n",
              "      <td>2588.704813</td>\n",
              "      <td>2583.949026</td>\n",
              "      <td>2580.056033</td>\n",
              "      <td>2578.493490</td>\n",
              "      <td>2577.690935</td>\n",
              "      <td>2577.311228</td>\n",
              "      <td>2576.599663</td>\n",
              "      <td>2576.422911</td>\n",
              "      <td>2576.302945</td>\n",
              "      <td>2576.238549</td>\n",
              "      <td>2576.190531</td>\n",
              "      <td>2576.150747</td>\n",
              "      <td>2576.137962</td>\n",
              "      <td>2576.128898</td>\n",
              "      <td>2576.126138</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>SSA</td>\n",
              "      <td>F4</td>\n",
              "      <td>1.406983</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>48.759722</td>\n",
              "      <td>40.957126</td>\n",
              "      <td>36.392110</td>\n",
              "      <td>31.176777</td>\n",
              "      <td>29.322985</td>\n",
              "      <td>27.728717</td>\n",
              "      <td>26.566932</td>\n",
              "      <td>26.003224</td>\n",
              "      <td>25.648036</td>\n",
              "      <td>25.425493</td>\n",
              "      <td>25.315400</td>\n",
              "      <td>25.303551</td>\n",
              "      <td>25.303551</td>\n",
              "      <td>25.303551</td>\n",
              "      <td>25.303551</td>\n",
              "      <td>25.303551</td>\n",
              "      <td>25.303551</td>\n",
              "      <td>25.303551</td>\n",
              "      <td>25.303551</td>\n",
              "      <td>22.607473</td>\n",
              "      <td>21.828070</td>\n",
              "      <td>21.689503</td>\n",
              "      <td>21.689503</td>\n",
              "      <td>20.239969</td>\n",
              "      <td>19.857632</td>\n",
              "      <td>18.803468</td>\n",
              "      <td>18.441907</td>\n",
              "      <td>17.896049</td>\n",
              "      <td>17.659752</td>\n",
              "      <td>17.506454</td>\n",
              "      <td>17.293035</td>\n",
              "      <td>17.156107</td>\n",
              "      <td>17.137185</td>\n",
              "      <td>17.055957</td>\n",
              "      <td>17.000349</td>\n",
              "      <td>16.963227</td>\n",
              "      <td>16.948115</td>\n",
              "      <td>16.938561</td>\n",
              "      <td>16.938561</td>\n",
              "      <td>16.935515</td>\n",
              "      <td>16.934493</td>\n",
              "      <td>16.934493</td>\n",
              "      <td>16.934096</td>\n",
              "      <td>16.933586</td>\n",
              "      <td>16.933256</td>\n",
              "      <td>16.933059</td>\n",
              "      <td>16.933022</td>\n",
              "      <td>16.932969</td>\n",
              "      <td>16.932945</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>SSA</td>\n",
              "      <td>F4</td>\n",
              "      <td>1.327610</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>56.591031</td>\n",
              "      <td>40.379158</td>\n",
              "      <td>30.871326</td>\n",
              "      <td>26.626798</td>\n",
              "      <td>25.439015</td>\n",
              "      <td>25.439015</td>\n",
              "      <td>25.439015</td>\n",
              "      <td>25.439015</td>\n",
              "      <td>25.439015</td>\n",
              "      <td>25.439015</td>\n",
              "      <td>25.439015</td>\n",
              "      <td>25.439015</td>\n",
              "      <td>25.439015</td>\n",
              "      <td>25.439015</td>\n",
              "      <td>25.439015</td>\n",
              "      <td>25.439015</td>\n",
              "      <td>25.439015</td>\n",
              "      <td>25.439015</td>\n",
              "      <td>25.439015</td>\n",
              "      <td>25.439015</td>\n",
              "      <td>25.439015</td>\n",
              "      <td>23.478344</td>\n",
              "      <td>23.478344</td>\n",
              "      <td>23.478344</td>\n",
              "      <td>23.478344</td>\n",
              "      <td>23.478344</td>\n",
              "      <td>23.478344</td>\n",
              "      <td>23.380201</td>\n",
              "      <td>23.002983</td>\n",
              "      <td>22.805620</td>\n",
              "      <td>22.645928</td>\n",
              "      <td>22.425779</td>\n",
              "      <td>22.367321</td>\n",
              "      <td>22.267360</td>\n",
              "      <td>22.245057</td>\n",
              "      <td>22.214275</td>\n",
              "      <td>22.201591</td>\n",
              "      <td>22.201591</td>\n",
              "      <td>22.196134</td>\n",
              "      <td>22.191604</td>\n",
              "      <td>22.189067</td>\n",
              "      <td>22.187006</td>\n",
              "      <td>22.186515</td>\n",
              "      <td>22.186057</td>\n",
              "      <td>22.185648</td>\n",
              "      <td>22.185512</td>\n",
              "      <td>22.185443</td>\n",
              "      <td>22.185379</td>\n",
              "      <td>22.185344</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>5</th>\n",
              "      <td>SSA</td>\n",
              "      <td>F4</td>\n",
              "      <td>1.354242</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>55.174022</td>\n",
              "      <td>40.871446</td>\n",
              "      <td>37.350151</td>\n",
              "      <td>35.472124</td>\n",
              "      <td>33.608983</td>\n",
              "      <td>31.558259</td>\n",
              "      <td>29.623234</td>\n",
              "      <td>29.237995</td>\n",
              "      <td>28.692075</td>\n",
              "      <td>28.006064</td>\n",
              "      <td>26.848358</td>\n",
              "      <td>25.513358</td>\n",
              "      <td>24.365946</td>\n",
              "      <td>23.397832</td>\n",
              "      <td>23.316271</td>\n",
              "      <td>23.316271</td>\n",
              "      <td>23.316271</td>\n",
              "      <td>23.316271</td>\n",
              "      <td>22.663024</td>\n",
              "      <td>22.663024</td>\n",
              "      <td>22.663024</td>\n",
              "      <td>22.391910</td>\n",
              "      <td>22.391910</td>\n",
              "      <td>22.391910</td>\n",
              "      <td>21.267261</td>\n",
              "      <td>20.310997</td>\n",
              "      <td>19.969915</td>\n",
              "      <td>19.244283</td>\n",
              "      <td>18.590040</td>\n",
              "      <td>18.092976</td>\n",
              "      <td>17.914960</td>\n",
              "      <td>17.837548</td>\n",
              "      <td>17.796526</td>\n",
              "      <td>17.717655</td>\n",
              "      <td>17.676123</td>\n",
              "      <td>17.647688</td>\n",
              "      <td>17.640746</td>\n",
              "      <td>17.624150</td>\n",
              "      <td>17.616600</td>\n",
              "      <td>17.613227</td>\n",
              "      <td>17.611748</td>\n",
              "      <td>17.609965</td>\n",
              "      <td>17.608916</td>\n",
              "      <td>17.608511</td>\n",
              "      <td>17.608345</td>\n",
              "      <td>17.608128</td>\n",
              "      <td>17.607996</td>\n",
              "      <td>17.607921</td>\n",
              "      <td>17.607890</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>6</th>\n",
              "      <td>PSO</td>\n",
              "      <td>F3</td>\n",
              "      <td>1.222843</td>\n",
              "      <td>168506.134641</td>\n",
              "      <td>160184.507508</td>\n",
              "      <td>152720.276230</td>\n",
              "      <td>150436.071070</td>\n",
              "      <td>116981.682931</td>\n",
              "      <td>102664.118631</td>\n",
              "      <td>101190.697395</td>\n",
              "      <td>100989.783658</td>\n",
              "      <td>67178.845380</td>\n",
              "      <td>33865.444822</td>\n",
              "      <td>27574.793828</td>\n",
              "      <td>27574.793828</td>\n",
              "      <td>27296.421603</td>\n",
              "      <td>20470.156348</td>\n",
              "      <td>16390.309992</td>\n",
              "      <td>12235.954403</td>\n",
              "      <td>10941.077099</td>\n",
              "      <td>9816.265024</td>\n",
              "      <td>9461.560535</td>\n",
              "      <td>9288.304382</td>\n",
              "      <td>8893.305293</td>\n",
              "      <td>8478.232909</td>\n",
              "      <td>7880.194124</td>\n",
              "      <td>7405.720029</td>\n",
              "      <td>6409.686999</td>\n",
              "      <td>6074.904144</td>\n",
              "      <td>5844.129893</td>\n",
              "      <td>5664.261802</td>\n",
              "      <td>5539.741430</td>\n",
              "      <td>5539.741430</td>\n",
              "      <td>5395.096605</td>\n",
              "      <td>5128.491577</td>\n",
              "      <td>4940.214753</td>\n",
              "      <td>4920.240543</td>\n",
              "      <td>4812.523367</td>\n",
              "      <td>4537.936270</td>\n",
              "      <td>4537.936270</td>\n",
              "      <td>4434.566434</td>\n",
              "      <td>4112.517704</td>\n",
              "      <td>3875.716661</td>\n",
              "      <td>3731.176948</td>\n",
              "      <td>3623.287046</td>\n",
              "      <td>3608.057776</td>\n",
              "      <td>3477.603649</td>\n",
              "      <td>3418.510414</td>\n",
              "      <td>3405.333652</td>\n",
              "      <td>3405.333652</td>\n",
              "      <td>3292.630866</td>\n",
              "      <td>3270.243950</td>\n",
              "      <td>3245.750870</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>7</th>\n",
              "      <td>PSO</td>\n",
              "      <td>F3</td>\n",
              "      <td>1.227612</td>\n",
              "      <td>109898.280554</td>\n",
              "      <td>109898.280554</td>\n",
              "      <td>65502.951157</td>\n",
              "      <td>58683.391332</td>\n",
              "      <td>58683.391332</td>\n",
              "      <td>52198.225490</td>\n",
              "      <td>43605.885661</td>\n",
              "      <td>38426.738696</td>\n",
              "      <td>35462.870877</td>\n",
              "      <td>33873.431312</td>\n",
              "      <td>20051.440760</td>\n",
              "      <td>16581.602268</td>\n",
              "      <td>11264.809731</td>\n",
              "      <td>11264.809731</td>\n",
              "      <td>11264.809731</td>\n",
              "      <td>11264.809731</td>\n",
              "      <td>11264.809731</td>\n",
              "      <td>11264.809731</td>\n",
              "      <td>9267.316682</td>\n",
              "      <td>9267.316682</td>\n",
              "      <td>9267.316682</td>\n",
              "      <td>8000.954761</td>\n",
              "      <td>7956.754025</td>\n",
              "      <td>7056.803897</td>\n",
              "      <td>6841.755067</td>\n",
              "      <td>6366.634743</td>\n",
              "      <td>5948.625310</td>\n",
              "      <td>5588.233464</td>\n",
              "      <td>5517.817797</td>\n",
              "      <td>4820.443619</td>\n",
              "      <td>4495.614235</td>\n",
              "      <td>4148.085704</td>\n",
              "      <td>3997.491039</td>\n",
              "      <td>3966.090257</td>\n",
              "      <td>3966.090257</td>\n",
              "      <td>3899.737922</td>\n",
              "      <td>3838.371485</td>\n",
              "      <td>3578.966232</td>\n",
              "      <td>3455.669892</td>\n",
              "      <td>3022.608755</td>\n",
              "      <td>3022.608755</td>\n",
              "      <td>3019.191579</td>\n",
              "      <td>2968.982288</td>\n",
              "      <td>2904.286056</td>\n",
              "      <td>2866.829836</td>\n",
              "      <td>2730.703276</td>\n",
              "      <td>2638.497908</td>\n",
              "      <td>2621.088148</td>\n",
              "      <td>2566.719503</td>\n",
              "      <td>2549.322518</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>8</th>\n",
              "      <td>PSO</td>\n",
              "      <td>F3</td>\n",
              "      <td>1.201217</td>\n",
              "      <td>272508.492870</td>\n",
              "      <td>272508.492870</td>\n",
              "      <td>246274.591997</td>\n",
              "      <td>184488.684465</td>\n",
              "      <td>135015.597386</td>\n",
              "      <td>103863.897697</td>\n",
              "      <td>92861.052714</td>\n",
              "      <td>81731.631975</td>\n",
              "      <td>44258.361366</td>\n",
              "      <td>34808.143216</td>\n",
              "      <td>34808.143216</td>\n",
              "      <td>34808.143216</td>\n",
              "      <td>30628.307382</td>\n",
              "      <td>23820.048196</td>\n",
              "      <td>23820.048196</td>\n",
              "      <td>19844.012445</td>\n",
              "      <td>19440.268534</td>\n",
              "      <td>16908.503061</td>\n",
              "      <td>15306.423264</td>\n",
              "      <td>13037.512205</td>\n",
              "      <td>9355.483219</td>\n",
              "      <td>8935.996431</td>\n",
              "      <td>7866.847510</td>\n",
              "      <td>7498.634829</td>\n",
              "      <td>7375.593346</td>\n",
              "      <td>6892.554820</td>\n",
              "      <td>6504.608269</td>\n",
              "      <td>6201.983031</td>\n",
              "      <td>5987.147678</td>\n",
              "      <td>5433.369587</td>\n",
              "      <td>5143.834924</td>\n",
              "      <td>5022.920619</td>\n",
              "      <td>4884.781872</td>\n",
              "      <td>4813.937026</td>\n",
              "      <td>4813.937026</td>\n",
              "      <td>4591.382122</td>\n",
              "      <td>4307.738324</td>\n",
              "      <td>4103.433506</td>\n",
              "      <td>4086.173684</td>\n",
              "      <td>3861.133701</td>\n",
              "      <td>3669.697947</td>\n",
              "      <td>3362.372729</td>\n",
              "      <td>3300.399516</td>\n",
              "      <td>3249.023486</td>\n",
              "      <td>2939.802726</td>\n",
              "      <td>2629.522799</td>\n",
              "      <td>2557.450265</td>\n",
              "      <td>2363.574354</td>\n",
              "      <td>2296.596855</td>\n",
              "      <td>2210.364796</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>9</th>\n",
              "      <td>PSO</td>\n",
              "      <td>F4</td>\n",
              "      <td>0.976889</td>\n",
              "      <td>89.760306</td>\n",
              "      <td>85.452817</td>\n",
              "      <td>80.136817</td>\n",
              "      <td>75.501265</td>\n",
              "      <td>70.348136</td>\n",
              "      <td>65.254231</td>\n",
              "      <td>59.284136</td>\n",
              "      <td>53.593403</td>\n",
              "      <td>48.781403</td>\n",
              "      <td>43.276854</td>\n",
              "      <td>37.693944</td>\n",
              "      <td>32.755011</td>\n",
              "      <td>28.160408</td>\n",
              "      <td>27.368415</td>\n",
              "      <td>24.148719</td>\n",
              "      <td>21.435781</td>\n",
              "      <td>18.768675</td>\n",
              "      <td>18.017429</td>\n",
              "      <td>17.762537</td>\n",
              "      <td>16.625056</td>\n",
              "      <td>16.565979</td>\n",
              "      <td>15.701459</td>\n",
              "      <td>15.333149</td>\n",
              "      <td>15.006977</td>\n",
              "      <td>14.836124</td>\n",
              "      <td>14.836124</td>\n",
              "      <td>14.836124</td>\n",
              "      <td>14.771812</td>\n",
              "      <td>14.618943</td>\n",
              "      <td>14.363203</td>\n",
              "      <td>14.218553</td>\n",
              "      <td>14.087128</td>\n",
              "      <td>13.566046</td>\n",
              "      <td>13.071113</td>\n",
              "      <td>13.001573</td>\n",
              "      <td>13.001573</td>\n",
              "      <td>13.001573</td>\n",
              "      <td>12.696868</td>\n",
              "      <td>12.696868</td>\n",
              "      <td>12.626412</td>\n",
              "      <td>12.428103</td>\n",
              "      <td>12.406141</td>\n",
              "      <td>12.134600</td>\n",
              "      <td>11.806561</td>\n",
              "      <td>11.617327</td>\n",
              "      <td>11.383517</td>\n",
              "      <td>11.243645</td>\n",
              "      <td>11.118397</td>\n",
              "      <td>11.076850</td>\n",
              "      <td>11.076850</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>10</th>\n",
              "      <td>PSO</td>\n",
              "      <td>F4</td>\n",
              "      <td>0.970022</td>\n",
              "      <td>89.275125</td>\n",
              "      <td>83.629862</td>\n",
              "      <td>79.550743</td>\n",
              "      <td>74.318743</td>\n",
              "      <td>69.040346</td>\n",
              "      <td>63.909029</td>\n",
              "      <td>59.275125</td>\n",
              "      <td>54.060751</td>\n",
              "      <td>49.005850</td>\n",
              "      <td>43.081794</td>\n",
              "      <td>37.500136</td>\n",
              "      <td>33.709086</td>\n",
              "      <td>27.825001</td>\n",
              "      <td>23.690012</td>\n",
              "      <td>22.752714</td>\n",
              "      <td>21.710060</td>\n",
              "      <td>20.102304</td>\n",
              "      <td>18.466563</td>\n",
              "      <td>16.582291</td>\n",
              "      <td>16.582291</td>\n",
              "      <td>16.582291</td>\n",
              "      <td>14.778997</td>\n",
              "      <td>14.778997</td>\n",
              "      <td>14.778997</td>\n",
              "      <td>14.447877</td>\n",
              "      <td>14.447877</td>\n",
              "      <td>14.447877</td>\n",
              "      <td>14.061955</td>\n",
              "      <td>14.046603</td>\n",
              "      <td>13.614766</td>\n",
              "      <td>13.272456</td>\n",
              "      <td>13.180141</td>\n",
              "      <td>12.612728</td>\n",
              "      <td>12.465817</td>\n",
              "      <td>12.393493</td>\n",
              "      <td>12.253786</td>\n",
              "      <td>12.036155</td>\n",
              "      <td>10.992684</td>\n",
              "      <td>10.968937</td>\n",
              "      <td>10.824234</td>\n",
              "      <td>10.824234</td>\n",
              "      <td>10.303563</td>\n",
              "      <td>10.303563</td>\n",
              "      <td>10.303563</td>\n",
              "      <td>10.274812</td>\n",
              "      <td>9.900511</td>\n",
              "      <td>9.900511</td>\n",
              "      <td>9.772127</td>\n",
              "      <td>9.769182</td>\n",
              "      <td>9.764364</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>11</th>\n",
              "      <td>PSO</td>\n",
              "      <td>F4</td>\n",
              "      <td>0.968264</td>\n",
              "      <td>90.002063</td>\n",
              "      <td>86.417589</td>\n",
              "      <td>80.505630</td>\n",
              "      <td>76.234189</td>\n",
              "      <td>71.429979</td>\n",
              "      <td>65.984312</td>\n",
              "      <td>60.138891</td>\n",
              "      <td>54.365979</td>\n",
              "      <td>48.765599</td>\n",
              "      <td>42.870423</td>\n",
              "      <td>38.475694</td>\n",
              "      <td>33.931789</td>\n",
              "      <td>31.016242</td>\n",
              "      <td>26.759818</td>\n",
              "      <td>22.876897</td>\n",
              "      <td>22.279970</td>\n",
              "      <td>20.521839</td>\n",
              "      <td>19.855174</td>\n",
              "      <td>19.855174</td>\n",
              "      <td>19.855174</td>\n",
              "      <td>19.683047</td>\n",
              "      <td>17.745068</td>\n",
              "      <td>17.352341</td>\n",
              "      <td>16.819421</td>\n",
              "      <td>16.277686</td>\n",
              "      <td>15.643854</td>\n",
              "      <td>15.182718</td>\n",
              "      <td>15.128656</td>\n",
              "      <td>13.756645</td>\n",
              "      <td>13.756645</td>\n",
              "      <td>13.756645</td>\n",
              "      <td>13.756645</td>\n",
              "      <td>13.756645</td>\n",
              "      <td>13.756645</td>\n",
              "      <td>13.738042</td>\n",
              "      <td>13.329167</td>\n",
              "      <td>13.035579</td>\n",
              "      <td>13.035579</td>\n",
              "      <td>13.031504</td>\n",
              "      <td>12.809380</td>\n",
              "      <td>12.720261</td>\n",
              "      <td>12.624425</td>\n",
              "      <td>12.365417</td>\n",
              "      <td>11.900102</td>\n",
              "      <td>11.679491</td>\n",
              "      <td>11.471685</td>\n",
              "      <td>11.471685</td>\n",
              "      <td>11.421590</td>\n",
              "      <td>11.195535</td>\n",
              "      <td>11.166306</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "   Optimizer objfname  ExecutionTime  ...       Iter48       Iter49       Iter50\n",
              "0        SSA       F3       1.757159  ...  3958.355427  3958.340907  3958.337686\n",
              "1        SSA       F3       1.765435  ...  7691.740762  7691.721228  7691.706882\n",
              "2        SSA       F3       1.718634  ...  2576.137962  2576.128898  2576.126138\n",
              "3        SSA       F4       1.406983  ...    16.933022    16.932969    16.932945\n",
              "4        SSA       F4       1.327610  ...    22.185443    22.185379    22.185344\n",
              "5        SSA       F4       1.354242  ...    17.607996    17.607921    17.607890\n",
              "6        PSO       F3       1.222843  ...  3292.630866  3270.243950  3245.750870\n",
              "7        PSO       F3       1.227612  ...  2621.088148  2566.719503  2549.322518\n",
              "8        PSO       F3       1.201217  ...  2363.574354  2296.596855  2210.364796\n",
              "9        PSO       F4       0.976889  ...    11.118397    11.076850    11.076850\n",
              "10       PSO       F4       0.970022  ...     9.772127     9.769182     9.764364\n",
              "11       PSO       F4       0.968264  ...    11.421590    11.195535    11.166306\n",
              "\n",
              "[12 rows x 53 columns]"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 14
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "7gw9qJb7vedV",
        "colab_type": "text"
      },
      "source": [
        "<h4>Convergence Curve Plot</h4>"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "14hzxM7spueJ",
        "colab_type": "code",
        "outputId": "6e047a4c-b0df-48c1-d4b1-447240fd9384",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 49,
          "referenced_widgets": [
            "e4a83005aaa043d48540b6f4202070e5",
            "641b5f943c8e419583baaf02485acffb",
            "45a8720657764f1585859c3d3dae8745"
          ]
        }
      },
      "source": [
        "#Select convergence curve to show\n",
        "filenames = [filename for filename in os.listdir(foldername) if filename.startswith('convergence')]\n",
        "\n",
        "drop_plot_convergence = widgets.Dropdown(options=filenames, description='Select plot:')\n",
        "drop_plot_convergence"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "e4a83005aaa043d48540b6f4202070e5",
              "version_minor": 0,
              "version_major": 2
            },
            "text/plain": [
              "Dropdown(description='Select plot:', options=('convergence-F4.png', 'convergence-F3.png'), value='convergence-…"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "ZMstknfRafMj",
        "colab_type": "code",
        "outputId": "b4b18695-4f57-4804-e992-7fd6b72ef746",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 279
        }
      },
      "source": [
        "#Show selected convergence curve\n",
        "Image(foldername +'/' + drop_plot_convergence.value)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAbwAAAEGCAYAAAAe4SDMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOzdd3wUdf7H8ddsyaZnUyEkIYVQkkASCIj0hIgVaYLoeYrlDs+7U1BQsPzsBTkbeuodZwE9BcECioIiISCdgCQC0hMgECC9l93N/P7YEMjRQshmk+zn+XjsY3ZnZ2ffX0zy8TvznfkqqqqqCCGEEO2cxt4BhBBCiJYgBU8IIYRDkIInhBDCIUjBE0II4RCk4AkhhHAIOnsHaAw/Pz/CwsIoLy/Hzc3N3nHsxpHb78htB8duv7S96W3PysoiLy+vGRO1bW2i4IWFhZGWlkZqaiqJiYn2jmM3jtx+R247OHb7pe2JTf58UlISmZmZVFVVNV+oVs7Z2Zng4GD0ev0577WJgieEEOLy3X333Xh4eBAWFoaiKPaOY3OqqpKfn092djbh4eHnvC/n8IQQop0KDg7G19fXIYodgKIo+Pr6XrBHKwVPCCHaKUVRHKbYnXax9krBE0II4RCk4AkhhLCpl156iZiYGGJjY4mPj2fz5s0sW7aM3r17ExcXR3R0NP/+978bfGbMmDFcffXVzZpDBq0IIYSwmY0bN7Js2TK2b9+OwWAgLy+P8vJyxo4dy5YtWwgODqa6upqsrKz6zxQVFbFt2zbc3d05dOgQERERzZJFenhCCCFsJicnBz8/PwwGA2C9rtrDwwOz2Yyvry8ABoOB7t2713/m66+/5uabb+a2225j4cKFzZalXffwlmcup7SmlFu732rvKEIIYVfPfbeL3cdLmnWf0Z08eebmmItuc+211/L888/TrVs3rrnmGiZOnMiwYcMYNWoUoaGhJCcnM3LkSG6//XY0GmsfbMGCBTz99NN06NCBW265hSeeeKJZ8rbrHt7Kwyt5P/19atVae0cRQgiH5O7uzrZt25g7dy7+/v5MnDiRefPm8cEHH7Bq1SquuuoqXnvtNe69914ATp48yf79+xk8eDDdunVDr9ezc+fOZsnSrnt4SSFJrDy8kl15u+jl38vecYQQwm4u1ROzJa1WS2JiIomJifTq1Yv58+dz991306tXL3r16sWdd95JeHg48+bNY9GiRRQWFtZfOF5SUsKCBQt46aWXrjhHu+7hDQ0eilbRsvroantHEUIIh7R37172799f/3rHjh106NCB1NTUButCQ0MB6+HMFStWkJWVRVZWFtu2bWu283jtuofnZfCid0BvUrNTeajPQ/aOI4QQDqesrIwHH3yQoqIidDodkZGRzJkzh/vvv5/7778fFxcX3NzcmDdvHllZWRw+fLjB5Qjh4eF4eXmxefNm+vfvf0VZ2nXBA0gMSeS1tNfILs0m2CPY3nGEEMKhJCQksGHDhnPW//DDD+fd/tixY+es2759e7NkadeHNMF6Hg8g9WiqfYMIIYSwq3Zf8Dp7dqaLVxcpeEII4eDafcED62HNtJNpFFcX2zuKEEIIO3GYgmdRLaw/tt7eUYQQQtiJQxS8Xn698HH2kcOaQgjhwNp3wUtfCBvfQ6vRMix4GL8c+wWTxWTvVEIIIeygfRe8/Ssh5QUoPUliSCJlpjLSTqbZO5UQQjgMrVZLfHw8PXv2ZMKECVRUVADnnzIIoKamhqlTpxIZGUnXrl0ZPXo02dnZzZKlfRe8pCfAXA3r3mBApwEYtAY5rCmEEC3IxcWFHTt2sHPnTpycnPjXv/7VYMqgjIwMfv75Z0JCQgB44oknKC0trb9Dy5gxYxg3bhyqql5xlvZd8Hy7QPwfIO0jXMryGBA4gNSjqc3yDyeEEOLyDBkyhAMHDpx3yqBOnTpRUVHBxx9/zJtvvolWqwXgnnvuwWAwkJKScsXf3+7vtMKwGZDxBaydTWKPRFKzU9lXuI/uPt0v/VkhhGgvls+EE7817z479oIbZjVqU7PZzPLly7n++usvOGXQgQMH6Ny5M56eng0+27dvX3bt2kVycvIVxW3fPTwAYwj0vRd+/Yxhbtabk8phTSGEaBmVlZXEx8fTt29fOnfuzH333XfBKYNsrf338ACGTIPtn+C38X1i/WJZfXQ198fdb+9UQgjRchrZE2tup8/h/a/zTRk0YcIEjhw5QmlpKR4eHvXbbtu2jZEjR15xlvbfwwNwD4D+98POr0jyjmZX/i5Olp+0dyohhHBI55syKDQ0FDc3NyZNmsQjjzyCxWIB4JNPPqGiooLhw4df8fc6RsEDGPgQGDxIzNwGwJrsNXYOJIQQjqmsrIxJkyYRHR1NbGwsu3fv5tlnnwXglVdewdnZmW7dutG1a1cWL17MN998g6IoV/y9jnFIE8DVBwY+SJfVLxEcnUDq0VRu7X6rvVMJIUS7VlZWds66C00ZBGAwGHjnnXd45513mj2LTXt4b775JjExMfTs2ZPbb7+dqqoqMjMz6d+/P5GRkUycOJGamhpbRmjo6gdQXH1JrKxhc85mKkwVLffdQggh7MpmBe/YsWO8/fbbpKWlsXPnTiwWCwsXLmTGjBk8/PDDHDhwAG9vbz788ENbRTiXwQMGP0xSzj5qamvYmLOx5b5bCCGEXdm0h2c2m6msrMRsNlNRUUFgYCApKSmMHz8egEmTJrFkyRJbRjhXvz/RW++Du6qw9qicxxNCCEdhs4IXFBTE9OnT6dy5M4GBgXh5eZGQkIDRaESns546DA4OPu907jald0E/9FEGlZex9vDP1Kq1Lfv9Qggh7MJmg1YKCwtZunQpmZmZGI1GJkyYwIoVKxr9+blz5zJ37lwAsrOzSU1NpaysjNTU1CvOptSGcrXFhR9Npfz3x3l0do644n22hOZqf1vkyG0Hx26/tD3V3jHaDZsVvJ9//pnw8HD8/f0BGDduHOvXr6eoqAiz2YxOpyM7O5ugoKDzfn7y5MlMnjwZsN5WJjExkdTUVBITE5slX2GHF3hh69OUmX8hMfHeZtmnrTVn+9saR247OHb7pe2JTf58c9x/sj2x2SHNzp07s2nTJioqKlBVlVWrVhEdHU1SUhJffvklAPPnz2f06NG2inBR3tFjiVNcSD2xGSoK7JJBCCEcwcmTJ/nDH/5AREQECQkJDBgwgG+++YbevXvX34XFbDbj7u7Of//73/rPJSQksH37dgCWLFlCbGwsUVFR9OrVq0njP2xW8Pr378/48ePp06cPvXr1ora2lsmTJ/Pqq6/yxhtvEBkZSX5+Pvfdd5+tIlycojC021h+12s5mfK8fTIIIUQ7p6oqY8aMYejQoRw6dIht27axcOFCsrOzGTRoUP31eOnp6XTr1q3+dXl5OQcPHiQuLo709HSmT5/O0qVL+f333/n222+ZPn06GRkZl5XFpqM0n3vuOfbs2cPOnTv59NNPMRgMREREsGXLFg4cOMDixYvrp4ewh2E9JgDwy76vIG//JbYWQghxuVJSUnBycuIvf/lL/brQ0FAefPBBBg4cWF/gNmzYwF/+8pf6Ht+WLVtISEhAq9Xy2muv8cQTTxAeHg5AeHg4jz/+OP/4xz8uK4vj3GnlPCKNkXRy7cCayhrGr3wabl9g70hCCGETr255lT0Fe5p1nz18ejDjqhkX3WbXrl306dPnvO8NGjSIp556CrAWvGeeeYYFCxZQWlrKhg0bGDhwYP0+pk+f3uCzffv25d13372svI5zL83zUBSFoSFJbHZ1pWrfcjgk1+UJIYQt/e1vfyMuLo5+/foRGhpKTU0NJ06cYM+ePXTv3p1+/fqxefNmNmzYwKBBg5r1ux26hwcwLGQYC/cuZKtvCEN+fBLuXwMarb1jCSFEs7pUT8xWYmJi+Oqrr+pfv/vuu+Tl5dG3b18ABg4cyOLFiwkMDERRFK6++mrWr1/Pli1bGDBgAADR0dFs27aNuLi4+v1s27aNmJiYy8ri0D08gH4d++Gic2FNRD84+Rvs+MzekYQQot0YPnw4VVVVvP/++/XrKirO3Md44MCBvPXWW/XFbcCAAXzyySd07NgRLy8vAKZPn84rr7xCVlYWAFlZWbz88stMmzbtsrI4fMEzaA0MCBzA2ops1OB+kPIiVJfaO5YQQrQLiqKwZMkS1qxZQ3h4OFdddRWTJk3i1VdfBazn8Q4dOlRf8AIDA7FYLPXn7wDi4+N59dVXufnmm+nRowc333wzs2fPJj4+/rKyOPwhTbAe1kw5msL+wc/TbeHdsOEdSHrC3rGEEKJdCAwMZOHChed9r1+/fqiq2mDd6Z7c2caNG8e4ceOuKIfD9/AAhgQNAWBNTR5Ej4aN70J5np1TCSGEaE5S8AB/V39ifGOss6AnPQmmClj3pr1jCSGEaEZS8OoMCx5GRm4GBR7+EHc7bPkPFLfwTA5CCNGMVFU953Bhe3ex9krBqzMsZBgqKuuOrYNhM0CthbWz7R1LCCGaLDs7m/z8fIcpeqqqkp+fj7Oz83nfl0ErdaJ8oghwCWDN0TWM6jIK+t4DaR/BwIfAt4u94wkhxGWbN28eQ4cOJTc3195RWoyzszPBwcHnfU8KXh1FURgSPIQfs37EZDGhHzIdtn8KqbPglv/YO54QQly20tLS+vtPCil4DQwLHsZX+7/inR3vEOgWCD1HwMHlsOUN8Aykh08Pegf0tndMIYQQTSAF7yz9A/tjNBj5eOfHZ1b6ecPvZ17fE3MPD/Z5EL1Gb4eEQgghmkoK3llc9a6sHL+SCvOZ296w8V345Q0sdyzm37mb+HjXx2w7tY3ZQ2cT5H7+2dqFEEK0PjJK838465zxcfY58xj4MD7OPvive5unrn6K14a9xqGiQ0z4bgKrDq+yd1whhBCNJAXvUgzuMHQ6ZK6BQ6lcF3Ydi25eRGePzkxNncrLm1+m2lJt75RCCCEuQQpeYyTcA55B1htLqyohHiF8esOn3BV9Fwv2LODOH+6k3FRu75RCCCEuQgpeY+idYdhjkL0V9q+0rtLqebTfo7yZ+Ca/F/zOgj0yW7oQQrRmUvAaK/4OMIbC6pfgrLsWXBN6DYOCBvHJrk+oMFVcZAdCCCHsSQpeY2n11l5ezg7Y+0ODt/4S+xcKqwtZvG+xncIJIYS4FCl4lyP2NvCJgNWvQG1t/er4gHj6d+zPvF3zqDJX2TGgEEKIC5GCdzm0Ohg2E07+Bnu+a/DW/XH3k1eZx9f7v7ZTOCGEEBcjBe9y9RoPft3qenmW+tV9O/Sld0BvPtr5ESaLyY4BhRBCnI8UvMul0ULiTMj9HXZ9U79aURTuj72fkxUnWXpwqR0DCiGEOB8peE0RPRb8o6wzKZzVyxvYaSA9fXvywW8fYKqVXp4QQrQmUvCaQqOBpMchfz/8dmZkpqIo3B93P8fKjvHDoR8usgMhhBAtTQpeU/W4GTr2svbyLOb61cOCh9HDpwcf/PYBlrN6f0IIIexLCl5TaTSQ+AQUZkLGwvrViqIwOXYyWSVZ/HT4JzsGFEIIcTYpeFei+w3QqTeseRXMNfWrkzsn08WrC3Mz5lKr1l5kB0IIIVqKFLwroSjWXl7REcj4on61RtHw59g/c6DoAClHUuwYUAghxGlS8K5U1xEQGAfr3mhwLu/6sOsJ8Qjh450fo551700hhBD2IQXvSikKDH0UCg41uC5Pq9FyV/RdZORlsCN3hx0DCiGEACl4zaP7TRAQDb+81uAem6MjR2M0GJm3c579sgkhhACk4DUPjQaGTIPcPQ3usemic2Fi94msPrqarOIs++UTQgghBa/ZxIwFny6w9h8N5su7rcdt6DV6Pt39qR3DCSGEkILXXDRaay/vxG+w/8z1d34uftzc5WaWHlxKQVWBHQMKIYRjk4LXnGJvBa/OsGZ2g17eXTF3UW2p5os9X1zkw0IIIWxJCl5z0uph8FQ4lgaZa+pXR3hFMCx4GAv2LJAJYoUQwk5sWvCKiooYP348PXr0ICoqio0bN1JQUMCIESPo2rUrI0aMoLCw0JYRWl78HeARCGtfa7B6UswkCqsL+fbgt3YKJoQQjs2mBW/KlClcf/317Nmzh/T0dKKiopg1axbJycns37+f5ORkZs2aZcsILU/vDAMfgqxf4PDG+tV9O/QlxjeGT3d/KrcbE0IIO7BZwSsuLmbt2rXcd999ADg5OWE0Glm6dCmTJk0CYNKkSSxZssRWEewn4W5w9bOO2KyjKAp3x9xNVkkWa46uufBnhRBC2ISi2ui+Vzt27GDy5MlER0eTnp5OQkICc+bMISgoiKKiIgBUVcXb27v+9dnmzp3L3LlzAcjOzmbhwoWUlZXh7u5ui7jNLuTIV3Q59Anb+rxGqWdXACyqheePPY+3zpupHade9j7bUvubmyO3HRy7/dL2prd9+vTppKWlNWOiNk61ka1bt6parVbdtGmTqqqq+tBDD6lPPfWU6uXl1WA7o9F4yX0lJCSoqqqqq1evbvacNlNZrKqvdFbVBX9osPrTXZ+qPef1VNNPpV/2LttU+5uZI7ddVR27/dL2pjv9t1NY2eyQZnBwMMHBwfTv3x+A8ePHs337djp06EBOTg4AOTk5BAQE2CqCfTl7Qv/7Yc8yOLm7fvXYrmPxcPJg3q559ssmhBAOyGYFr2PHjoSEhLB3714AVq1aRXR0NKNGjWL+/PkAzJ8/n9GjR9sqgv31/wvo3WDdm/Wr3PRu3N7jdlYeXslvub/ZMZwQQjgWm47SfOedd7jjjjuIjY1lx44dPPHEE8ycOZOVK1fStWtXfv75Z2bOnGnLCPbl6gN974GdX0JBZv3qe3vei4+zD6+lvSZTBwkhRAvR2XLn8fHx5z1humrVKlt+besy8EHYMhfWvwU3zwGsvby/xf+NFza9wKojq7gm9Bo7hxRCiPZP7rRiax4dofcfYcfnUHK8fvW4ruPo4tWFN7e9iclismNAIYRwDFLwWsKgKVBrgQ3/rF+l0+iY1ncaR0qPsHDvQjuGE0IIxyAFryV4h0GvCbDtYyjPr189OGgwAwIH8K/0f1FcXWy/fEII4QCk4LWUwQ+DqQI2/6t+laIoTOs7jdKaUv6d8W87hhNCiPZPCl5LCegBUTfDln9DVUn96u4+3RnbdSwL9izgSMkROwYUQoj2TQpeSxoyDaqKIe3DBqv/Hv939Bo9b21/y07BhBCi/ZOC15I69YYuybDxXTBV1q/2d/Xnnp73sPLwSraf3G7HgEII0X5ddsErLCwkIyPDFlkcw5BpUJ4L2z9tsHpS9CQCXAJ4Le01mT5ICCFsoFEFLzExkZKSEgoKCujTpw9//vOfeeSRR2yd7YqpqkpJVSu7xi10IIRcbb0Q3XRm9nNXvSsPxD/Ab3m/sTNvpx0DCiFE+9SogldcXIynpydff/01d911F5s3b+bnn3+2dbYrdvfHW7lv3lZ7x2hIUSDpcSg5BtvnN3hrWPAwANJz0+2RTAgh2rVGFTyz2UxOTg6LFi1i5MiRts7UbML93Nh5rASzpZUdIgwfBmFDYO1rUFNRv9rf1Z9Obp2k4AkhhA00quA9/fTTXHfddURGRtKvXz8OHTpE165dbZ3tisWFeFFpsnAgt8zeURpSFEh6EspPwdb/NHgr1j+WjFw5RyqEEM2tUQVvwoQJZGRk8N577wEQERHBV199ZdNgzSE22AhAxtFWeBeT0AHWEZvr3oLq0vrVcf5x5JTncKrilB3DCSFE+9OogvfYY49RUlKCyWQiOTkZf39//vvf/9o62xUL93XDw1nHjuwie0c5v+FPQmUBbDpz95VY/1gA6eUJIUQza1TB++mnn/D09GTZsmWEhYVx4MAB/vGPf9g62xXTaBRig73IaK0FLygBut8EG96BykIAonyicNI4yXk8IYRoZo0etALw/fffM2HCBLy8vGwaqjnFBhvZk1NKlcli7yjnl/QEVBfXz6Sg1+qJ8o2SHp4QQjSzRhW8kSNH0qNHD7Zt20ZycjK5ubk4OzvbOluziAv2wlyrsjun5NIb20PHnhAzDja9D+V5gPU83q78XTJPnhBCNKNGFbxZs2axYcMG0tLS0Ov1uLq6snTpUltnaxZxIacHrrTSw5oAiY+DuRLWvQlYz+NVW6rZV7jPzsGEEKL9aFTBq6io4L333uOBBx4A4Pjx46Slpdk0WHPp6OmMv4eBjOxWOFLzNP9uEDsRtn4AJTnE+ccBsCN3h52DCSFE+9GognfPPffg5OTEhg0bAAgKCuKpp56yabDmoigKccFepLfWgSunDXsMas3wy+t0dOtIgGuADFwRQohm1KiCd/DgQR577DH0ej0Arq6uqKpq02DNKS7YyMHc8tZ3X82z+URA7z/CtnlQnE2cf5wMXBFCiGbUqILn5OREZWUliqIA1gJoMBhsGqw5xdadx9vZmg9rgnUmBbUWNr5HnH8cx8qOkVeZZ+9UQgjRLjSq4D333HNcf/31HD16lDvuuIPk5GRmz55t62zNJjbIehlFemsveMbO0PMW2DaPOM9wQC5AF0KI5qJrzEYjRoygT58+bNq0CVVVmTNnDn5+frbO1my83Zzo7OPaei9AP9ugh+C3RUQd2ohOoyM9N53hnYfbO5UQQrR5jZ4AtqqqCm9vbzw9Pdm9ezdr1661Za5mFxdiJL01X5pwWsde0CUZw5YPiPLuLj08IYRoJo3q4c2YMYMvvviCmJgYNBprjVQUhaFDh9o0XHOKC/biu/Tj5JZW4+/Rys8/DpoCn4wiFie+zt+FudaMTtOo/1RCCCEuoFF/RZcsWcLevXvb1ECV/1U/c0J2EclRHeyc5hLCh0JgPHFHM/jM1cL+wv1E+UbZO5UQQrRpjTqkGRERgcnUiof0N0LPIE80Cm3jsKaiwKApxOYfAWQGdCGEaA6N6uG5uroSHx9PcnJyg17e22+/bbNgzc3VSUe3Dh6tf6TmaVGj6LQqGD9VISM3ndt63GbvREII0aY1quCNGjWKUaNGNVh3+pq8tiQ22IuVu0+iqmrrz6/VoQx4kNi0WaTnbLF3GiGEaPMaVfCKioqYMmVKg3Vz5syxSSBbig02sigtm+zCSkJ8XO0d59Li7yBuy2ukVJ6isKrQ3mmEEKJNa9Q5vPnz55+zbt68ec2dxebi6gau7GgL5/EAnFyJjbwJgIwD39s5jBBCtG0X7eEtWLCAzz//nMzMzAaHNEtLS/Hx8bF5uObWvaMHTjoNGdlF3BzXyd5xGiVm4HS0X/9E+s7Pie34mL3jCCFEm3XRgjdw4EACAwPJy8tj2rRp9es9PDyIjY21ebjm5qTTEB3o2XYGrgAunp3opvcio+gAfb3z7R1HCCHarIsWvNDQUEJDQ9m4cWNL5bG5uGAvFm/LxlKrotW08oErdeKCh/Dtoe/odPQb4BZ7xxFCiDbpoufwBg8eDFh7dJ6envWP06/borgQIxU1Fg6cKrN3lEaLDR5EhUZDZe4qKMmxdxwhhGiTLlrwPvvsM8B6zq6kpKT+cfp1W3T6jiutfkLYs8T7xwOw1VkHv7xu5zRCCNE2XbTgjR07tv75Lbe0j0NpEX5ueBh0bWPmhDrBHsHE+MbwhreRb/d+AUVH7R1JCCHanIsWvLNnNT906JDNw7QEjUahZ5AX6UfbzsAVRVGYe+1cuhrCeNLXyPs//rVNzTgvhBCtwUUL3tl3I2nqnUksFgu9e/dm5MiRAGRmZtK/f38iIyOZOHEiNTU1TdrvlYgLMbLnRAlVJkuLf3dTeTp5cn/HKYwydOK9qiyeXv0wptq2fX9TIYRoSRcteOnp6fWDVDIyMpo0aGXOnDlERZ250/+MGTN4+OGHOXDgAN7e3nz44YdX1oIm6B/hg8misnL3yRb/7iuhU3S8eOM8HiguZ8nRVfzt579RVtN2Bt8IIYQ9XbTgWSyW+kEqZrP5sgetZGdn8/333/OnP/0JsB4iTUlJYfz48QBMmjSJJUuWNEMzLs+wrv6E+7kxd+2hNndoUPEM5K/db+f5vAK2ntjCpBWTOFF+wt6xhBCi1bPprKJTp05l9uzZlJaWApCfn4/RaESns35tcHAwx44dO+9n586dy9y5cwFr4UxNTaWsrIzU1NRmyTY0wMT83eX8+5sUevhom2Wftna6/XqlH6PKP8Dg5sczHOH2JbczI3AGzhpne0e0meb8b98WOXL7pe2p9o7Rbtis4C1btoyAgAASEhKa9B9s8uTJTJ48GYC+ffuSmJhIamoqiYmJzZLvapOF72alsLXEk7+M69cs+7S1Bu3X7ODGdW/R8baPuGfLc6xzWseLg1+0az5bas7/9m2RI7df2p5o7xjtRqNuHt0U69ev59tvvyUsLIzbbruNlJQUpkyZQlFREWazGbD23IKCgmwV4aKc9VruGhDKqj2nOHCq1C4ZrsjAh8DJnT7p3/DnXn9m6cGl/JT1k71TCSFEq2WzgvfKK6+QnZ1NVlYWCxcuZPjw4Xz22WckJSXx5ZdfAtZZGEaPHm2rCJd059WhGHQaPvgl024ZmszVBwb8FX7/lvsDBtLLrxfPbXxOzucJIcQF2KzgXcirr77KG2+8QWRkJPn5+dx3330tHaGer7uB8QnBfL39GKdKq+yWo8mu/is4e6FPncWsIbMw1Zp4av1T1Kq19k4mhBCtTosUvMTERJYtWwZAREQEW7Zs4cCBAyxevBiDwdASES7ovsHhmGpr+XTjYbvmaBIXIwx+BPb/SOeTe5l51Uw252zm092f2juZEEK0Oi3ew2ttIvzdGRHVgU83Haaypu1ciF7v6r+Cb1f44VHGht7A8JDhzNk+h70Fe+2dTAghWhWHL3gAk4dGUFRh4sttbfAelTonuPEfUJiJsvEdnh34LEaDkRlrZ1BlboOHaYUQwkak4AEJod707mzkg3WZWGrb1oXoAHRJgpix8MvreFcW8+KgFzlYfJA3t71p72RCCNFqSMHDep/QyUMiOJxfwcrdbXSU47UvgaKFFY8zMGggf4z6I5/v+ZytJ7baO5kQQrQKUvDqXBvTkc4+rsxd20ZnhfAKgsQZsPcH2LuCKX2m0MmtE7O2zMJca7Z3OiGEsDspeHW0GoU/DQln+5EitmYV2DtO0xjnCJcAACAASURBVPR/APy6w/LHcFZVpvebzr7CfSzet9jeyYQQwu6k4J1lfEIw/h4G/m/JzjY1dVC90wNYig7D+jlc0/ka+gf255+//pPCqkJ7pxNCCLuSgncWVycds8fHsudEKa/92EaH9UcMg5hx8MsbKIVZzOw3k3JTOf/89Z/2TiaEEHYlBe9/JHUP4K4BoXywLpP1B/LsHadprnsJNDpYMZNI70hu73E7i/ct5vf83+2dTAgh7EYK3nk8fkMUXfzdmLYonaKKlp+R/Yp5doLEmbBvBexdzgPxD2A0GJm1ZVabm/9PCCGaixS883Bx0jLntt7klVXz5JKdbbNIXF03gGXFTDwVJ6b0mcL2U9v5IfMHeycTQgi7kIJ3AT2DvHjk2m58n5HDkh3nn6S2VdPq4cbZUJgFG95mTOQYon2jeSPtDSpMFfZOJ4QQLU4K3kXcP7QLV4X58PSSXRwtaINFIiIRosfAL6+jLc7m8ase51TlKf7z23/snUwIIVqcFLyL0GoUXr81DhWYtii9bd527NoXQdHAT08SHxDPqC6jmL9rPhm5GW3zUK0QQjSRFLxLCPFx5fnRMWzJKuCNlXupbWtFzxgCQ6bB79/BgVVM7TMVZ50zd/xwB0mLknh0zaMs2ruIzOJMKYBCiHZNZ+8AbcHY3kGs25/Hu6sPsulQAS+O6UlUoKe9YzXewAdhx2ewfAb+D2xgyeglrDu2ji0ntrA1ZysrslYA4O/iz4BOA0junMygoEEYtPadq1AIIZqTFLxGUBTroc2BkX68/MPvjHxnHfcMDGPqiG64G9rAP6HOANe/Cp9PgM3vEzBoCuO6jmNc13GoqsqR0iP1xS/1aCrfHvwWV50rw4KHMSJsBIM6DcJV72rvVgghxBVpA3+tWwdFURifEMw1UQG8umIvH6zLZFlGDs/cHM31PTuiKIq9I15ct2uh+42wZjb0mmC9Vg9ru0I9Qwn1DGVCtwmYak1szdnKyiMrSTmSwvKs5ThrnUkMSeSJ/k/g7ext54YIIUTTyDm8y2R0deKVcb34+q8D8XZz4oHPtnPPvK3sOFpk72iXdt3LYDHByqcvuIleo2dg0ECeGfAMqyas4sNrP2RM5BhSjqQwdfVUaixt8EJ8IYRACl6T9enszXd/H8T/jYxm2+FCxry7nlv/vZGUPSdb78AWn3AYPBV+WwyZay+5uU6j46rAq3jy6id5cfCLbD+1nec2PieDW4QQbZIUvCug02q4b3A4Gx9P5qmbosguqODeeWlc99ZaFqcdpcZca++I5xo0FXwi4Mt7rRelN9IN4TfwQNwDfHvwWz7a+ZHt8gkhhI1IwWsG7gYdfxoSwZrHknhzYhxajcKjX2YwZHYKc37ez/GiSntHPMPJFW7/wnpo87MJUNn4aYMeiHuAG8JuYM72Oaw6ssqGIYUQovlJwWtGeq2Gsb2DWT5lCPPvvYpuHTx48+d9DHo1hUkfbeGH33JaR6/Pvxvc9rm1h7fwj2CubtTHFEXh+UHP08uvF4//8rjMviCEaFOk4NmAoigM6+bPp/f155fHkngwKZJ9J0v562fbufqVVbywbDdbswo4UVxlv/N9YYNg9HtweB0s/Ts08rycs86ZOcPn4GXw4u8pf+dUxSkbBxVCiOYhlyXYWIiPK49c250p13Rj7f5cFm09yvwNWXy4LhMAvVaho5czQUYXgoyuBHm7EOjlTKCXM52M1uceznrbhIudYJ0dPeUF8A6D4U826mN+Ln78c/g/uXP5nTyU8hAfX/8xLjoX22QUQohmIgWvhWg1CkndA0jqHkB+WTUZx4o5VljJsaLK+uX6A3mcLK06p7PlYdARaHTGYKnix4IMAr1OF0UXAo3WYums1zYt2JBp1kOba2eDdyj0/mOjPtbdpzuzh87moZSHuPOHO5lx1Qz6dezXtAxCCNECpODZga+7gaTuAed9r8Zcy6nSKnKKqzheVElOcRU5RZUcL65iX3YFK3efJK+s4bVwigLB3i5E+rvTxd+dyAB3ugRYn/u4OV08jKLAyDeh5Bh8NwU8g6BLUqPakRiSyJtJbzJryyzu/fFerg29lml9p9HJvVOjPi+EEC1JCl4r46TTEOztSrD3ubfySk1NJTExkSqThZMlVRwvqiKnuJLD+RUczC3jYG45Gw7mU33WwBg/dye6dfA46+FO1w4eeLmcdZhUq4cJ8+Gj6+GLP8Ifv4LOVzcqb3LnZAZ2Gsi8XfP46LePWJO9hnt63sO9Pe+Vw5xCiFZFCl4b5KzXEurrRqiv2znv1daqHCuq5EBuGQdOlrHvZCn7TpWxKO0oFTWW+u383A2E+boS5udGuJ8bYb5udBkxj27Lb0Pz3/Fw59cQclWj8rjoXHgg7gHGdBnDG9ve4F/p/+Kb/d8wpc8Urg+/Hr3GRucghRDiMkjBa2c0GoUQH1dCfFwbHDY9XQj3nSxl38kyMvPKyMqvYO2+XL7cll2/XQCPsNj5Rfw/HMXbQbMxBfYluG4gjV6rQaMoKApoFKXuAdTfRlTP2OAZ9PS4gS8O/ZMn1j3B7C1vMCxwNEM6jsRDb7xkfjcnHb7uTvi6GXBxauJ5SSGEOA8peA7i7EKYHNWhwXvl1WYO51dwOL+cwwUVfHHyfSbt+ysPHpvBPUee5ENTeBO+8R607vswe69nac2HLMmcj6kkHlPBIGqrAxu1Bxe9Fh83J3zdnXAxV1Hhm0NS9wAphEKIJpGCJ3Az6Iju5El0p9Nz/HWB4p9h3k18UfEqxeMXc8wtCkutSq0KtaqKqlqfX3wW+IHA3RwvzyLl+Nds1P1EjTGN7l7x3BH5MIGuoQ22VlUoqzZTUF5NfnkNBWU1FJTXkF9ew69ZFv762XZcnbQkR3VgZGwgw7r5N310qhDC4UjBE+fnFQR3L0OZdxPGL2/FeNcSCO7TxJ35Mq5XAsXVj/H1/q/5eOfHvJL+F54Z8Aw3RdzUqD2krF6Nc0gvvsvIYcXOHL5LP46HQcfwqADC/dwI8HAmwMNAgKeBAA9n/Nyd0GnlvgpCiDOk4IkL8wqGSctg3o3w6RgY8QLE3wHapv3YeBm8uKfnPdwYfiOPrX2Mmb/MZNvJbcy4asYlZ1fXKAoDI/0YGOnH86Nj2Hgwn2UZx1m9N5elO46fs72iQHSgJ8k9Ahge1YHYIC80mlY+Z6EQwqak4ImLM4bA3d/Dl/fBdw/Bpvfgmmeh2/XWqtIEHdw68OF1H/L2r2/z8c6P2Zm3k9cTXyfEI6RRn9drNQzt5s/Qbv6A9drFvLJqTpVWc7KkyrosrmJLZgH/XH2At1MO4OfuRFL3AJKjAugT6o1Oc27vT6soeLroWv9kvkKIJpGCJy7N2Bnu+wl+/w5+fhYW3Aahg2DE8xDct0m71Gl0PJLwCL39e/Pk+ieZ+N1EXhj0AsmhyZe9Lyedhk5GFzoZz73ur7C8hrX7c1n1+yl+3HWCxWeNSD0fHzcnenT0oEdHT6ICPYgK9CQywF3OFQrRDkjBE42jKBA9CrrfANvnQ+os+CAZosfAtS9Yi2ITJHVOYrHPYqalTmNq6lTu7XkvU/pMQaM0z/k3bzcnRscHMTo+CLOllrTDhew9UXrebWvMtRzMLeP3E6V8vuUwVSbrBfxajUIXfzdiOnkRUze4JybQCy9Xub5QiLZECp64PFo99PsTxE6EDf+EDW/DodUw5l/Q48Ym7TLIPYhPbviEWVtm8dHOj8gszmTWkFm46s+928yV0Gk1XB3hy9URvpfc1lKrcji/nD0nSvk9p4Tdx0vYeDCfb349Vr9NsLcLscFe9A/3ZUAXX7oGuMvhUCFaMSl4omkMHpD0OMTdBosnwcLbYeCDkPyMtSheJietE/939f/RxdiF2VtnM2nFJN4Z/g4d3TraIPylaTUKEf7uRPi7c2OvM9cN5pVVs/t4CbuOl7DreDG/Hinih99OAODr5lRXUH3oH+FLsLcLrk7yKyZEa2Gz38ajR49y1113cfLkSRRFYfLkyUyZMoWCggImTpxIVlYWYWFhLFq0CG9vb1vFELbmEw73/gQ/PQkb3oGjW2D8R9YRnpdJURTuiLqDzh6deXTto/zh+z/wzvB3iPGLsUHwpvFzNzQYMANwtKCCjYfy2XQwn42H8vn+t5z691ydtPV3jvGrW4b4uNC9oyfdO3gQ7O0io0eFaCE2K3g6nY7XX3+dPn36UFpaSkJCAiNGjGDevHkkJyczc+ZMZs2axaxZs3j11VdtFUO0BL0z3PQ6hA6Ebx+Cfw2Bcf+Brtc0aXdDgofw6Q2f8vdVf+fuFXfz0uCXcOISsz7Y0ek72NzaNwRVVTlSUMG2w4WcLKkmv8x6EX1eWTXHiqpIzy4mt/TMDPOuTlq6dvCgewd3unXwoEuAO5H+7gQZpRAK0dxsVvACAwMJDLQeCvLw8CAqKopjx46xdOlSUlNTAZg0aRKJiYlS8NqLnrdAxzhYdBd8dgv0fwD632/tBV6mrt5d+fymz5m6eirT1kxjpHEkw9Rhrf4cmaIoF7yx92ll1WbrPU1PlLL3ZCl7T5SSsucUi9LOjCB11muI8Ds9zZMbpSdMaPbl0tHLmQ6ezng6y+UTQlwuRVX/d7rR5peVlcXQoUPZuXMnnTt3pqioCABVVfH29q5/fba5c+cyd+5cALKzs1m4cCFlZWW4u7vbOm6r1Vbar7FUE3ngQwJzfkJBpdDYixMdryHXfwC1l7jA/H+ZVBOf531OWkUaiR6JjPUe22wjOFub0hqVnPJajpfVklNeS065Sk5ZLXmVKv/7S+qkBW+DgpdBwU1/+gFuegX3utfOOnDRKbjoFJy11ufOOtAqtKli2VZ+7m3hSts+ffp00tLSmjFR22bzgldWVsawYcN48sknGTduHEajsUGB8/b2prCw8KL76Nu3L2lpafXzwTmqNtf+4mxIXwC//tc6q7rBE3qNh/g/QqfecJ6Lv8+nVq3loW8eYk3pGsZEjuGZAc+g0zjOYJBqs4Vvf1pDWHQ8J4qrOFlSxYniKk6UVFFQXkNhhYniCuuy0mS59A4BjQI6jQatRkGnUdBqFfRaDQadBme9Fme9BoPuzPL0dprT25+11CgNl1qNUn9PAgXrcwXqlmdeoyjnrD+fzMxMwsPDz2xbt+Hpz7Vnhw4d5ImJiXhfaiLnCzj9t1NY2fSvhslk4pZbbuGOO+5g3LhxAHTo0IGcnBwCAwPJyckhIOD8M3+LdsArGIY+CoOnweH11sK3YwGkfQRu/hA+zDq7ekTiRQe5aBQNt3jfQnRENO+nv0+5qZxZQ2bhpG295/Wak0Gnxd9VQ78wn0tuW2WyUFJpoqjSRFm1mbIqM+XVZkqrrcvyajMmi4qlVsVcq1KrqpgtKubaWkyWWqpNtVSZLVSZaqmuWxZXmrDUgqW2FnOt9bOWWuvnLKpKba11aak981xVsfZKVVA581pV1brlZf4jHNh3+f9w7cT95TVNLniiIZsVPFVVue+++4iKiuKRRx6pXz9q1Cjmz5/PzJkzmT9/PqNHj7ZVBNFaaDQQPsT6uHE27PkeDq6GQ6mw80vrNr5drYWvU2/w7QI+EdaiWP9/8wp/jf8rHk4ezN46m3JTOW8mvtns1+q1ddbemZYAT2d7R2kU9ezieAFr1qQydOiw+kJ5uoA6grVr1xLhd+HzweLy2KzgrV+/nk8//ZRevXoRHx8PwMsvv8zMmTO59dZb+fDDDwkNDWXRokW2iiBaI2cviP+D9aGqcGq3tfAdSoUdn8PW/5zZ1snDOuDFtwtdimvB8gt36pxxDxjKs8d/4f5vxvJutzvxjB4HTlL42iJFufChzNM0iuKwM184aRUZrduMbFbwBg8ezIVOD65atcpWXyvaEkWBDjHWx4C/gcUMRYehIBMKDkL+QSg4BDnpdCo6Bse+A7WWsYC7qwuPBdRy99YXGLthFuFxfySs1x0EundCq5H7XgohzuU4Z/5F66fVWQ9n+nYBGl7D98vpATsWM5irGGGp4Z/H1vHU1leZbSqBA5/Bgc8waPR09gojzDOMG8Nv5JrQpl0LKIRof6TgibZFqwOtdZj2oK6jSIm8mcLKPDLT/k1W+idkqiVkajzIqCpi5eGVjAgdwRP9n8DPxc/OwYUQ9iYFT7RpiqLg4+qPz9CnSLjqQVj7D9j0L8w6Z+aF9eT9w6vYfHQNM4OvZ2RIMopnILh3ABfvJs/nJ4Rom6TgifbD2QuufRES7kGX8iJ/ytnB8Mp8nja68sSRb1m+5wueziugo8UCOhfw6AiencAjEDwDwTMIjKHgHWpdGhzzYmch2ispeKL98e0CEz4GIAKYX1nEgp0f8/ae/zLW3cjffBMYqXhiLM+Hkhw4lga/54CluuF+3PzrCmCYtTi6+YGr71kPP3D1sV5Qr5VfJSFaO/ktFe2e1sXIH/s9zLAe43luw3O8emIDrys6+gf257q4yQzvPBwvJ0+oKICiLOtdYQoP1y2zIHsrlJ0Cc+WFv0TvBs6e1l6moW559sPFeOa5sTMExFhvui2EaDFS8ITDCPEI4T/X/offC37np6yf+DHrR57e8DTPb3ye/p36c13odYwIHYF7UML5d1BTARX5UJFXtyywPqpLoKr4zKO6xLpNwUHr68oiUP/nll+KFvx7QGAsdIy1LgOi5dyiEDYkBU84FEVRiPaNJto3mil9prC7YDc/Zv3IT1k/8fSGp3l588uMCB3BmMgx9O3Yt+GNqp1crQ9jyOV9qapCTXld8SuE/ANwIgNyMuBgivV+o6dp9NZDp25+4BZgPazq5kdoTiFs3mftRdb3ID3ByQ20BtA5g65uKYdXhTgv+c0QDktRFGJ8Y4jxjeHhPg/zW95vLDmwhOWZy/nu0HcEuQcxustoRkeOppN7pyv5IusAGIM7eAVBx54QM+bM+6UnrQUwbx+U59Y98qzLvP1Qnku4uRKyPmvk92msd6nx7gze4da71dQvw6yjVPUuTW+PEG2UFDwhsBa/WP9YYv1jebTfo6w6soolB5bwXvp7vJf+Hv4u/jhpnXDSOmHQGuqXRoORnn49ifOPI8Y3BmddE87LeXQAjxHQdcQFN1mTspJh/Xs3PGxaVQymSjBXgbn6zMNSbT2MWpgFp36HfSvAUtNwh3rXuoE3PmcG4Di5gdYJtPq6Zd1znXPdeUjvunORxjPP9a5yCFa0GVLwhPgfLjoXRkaMZGTESI6XHWfZoWUcLztOjaWGakt1/bLaUs3v+b+z8vBKAHSKju4+3Ynzj6OnX088nDzQKBp0ig6tRotW0aLT6DAajAS5B6HX6hudST37UOflqrVAyfEzg3Aq8qw9yIqCM+cj8w+CqcJaGC1m67LWdOl9a/TnDspxNlov9wiIAv8o8O8ul3iIVkEKnhAX0cm9E5NjJ190m/zKfH7L+4303HTSc9P55sA3fL7n84t+RqNo6OjakWCPYEI8Qgj2CCbcM5y4gLjmvyuMRms972gMsc5Y0ViqCrVmayE8ff6xssi6rDq9PGuwTmWRdVl0BPb+YO15nmbsbC1+PuFwei5DRQGUuontNNbeosEDnNyty7qHW1mWtSDrXa2HYvUu1t6n9CzFZZKCJ8QV8nXxJTEkkcSQRADMtWYOlxymylKFpdaCRbVgrjVTq9ZirjWTX5XP0dKjHC09SnZpNquPrqagqqB+f509OhMfEE+fgD707tCbcM9w+zRMUeoOb551OUVj1VrOHFLN/d26PLUHDm8AtRbrRHnqmaVae8EeZT+A/53DVNFYLwU5fUj2f6+RdKk77OpsbPjc2UsKpQOTgidEM9NpdHQxdrmsz5SbytlfuJ8dp3bw66lf+SX7F749+C0ARoORYE0w+zL2EecfRy+/Xq1/HkCN9syNwKNGNu4zFhNUl0JNmXVZbV3u3LGFnt26WHuapkrr9ZCmSuv7lQXWw7Nlp6wFtSLPut0Fc+nBPcA6cMej41nLAOvoV4Nn3UhYj7Oee0qRbCek4AnRCrjp3YgPiCc+IJ67uRtVVckqyeLXU7/y66lf2Zi1kXd+fQewHg7tauxKnH8cAzsNZEjwkPYx+7tWX9djazize94xHcQlNn4/NRV1h1yLzhx6Pf28PNc6KrbshPXmAkc3W89hXjSXwVoU6x+B1qWz0ZpZo7deCqLR1/WI9dZb1+mdzxyG1bmcORyr0UkBtRMpeEK0QoqiEO4VTrhXOOO6jiPVlErvAb3JyM2oP1f4feb3LNq3CE8nT64Lu46RESPpHdAbxdH/mJ6+XtKzkZeSmGusPcPqUqgqsY6ArS6pe11s7T2WnoDSHDi5Gw6kQE1p0/MpmjMFUVf30OqpP5951jKhvAzillgvJxFXTAqeEG2El8GLIcFDGBJsHXhirjWzKWcTyw4tY9mhZSzet5gg9yBuiriJpJAkPJw8MGgNDR4yOe556JwaXxxPqy61Piwm68Aei8l6DtJS9zBXgqnq3MOwpqq6y0iq6tZXW9+zmDhzXpP685vV5lw8NI0fzSsuTgqeEG2UTqNjcNBgBgcNptxUTsqRFL47+B0f/PYBczPmXvAzOkWHRtGgVbRoNHVLRYOvsy9dvbtaH8audPPuRoBrgPQYz+f0KFIb25maSqJXkM2/x1FIwROiHXDTu3Fzl5u5ucvNnKo4RUZuBpXmSmosNVRZquqvG6w2V2NRLdSqtdSqtfXPLaqFE+Un2HpiK8sOLavfr6eTJxFeEQS4BuDv6o+fix/+Lv74u/jj5+qHj7MPRoMRnUb+lIjWT35KhWhnAlwDuCb0miZ/vri6mP2F+9lftJ99hfvIKs5iX+E+1h9fT7mp/JztFRS8DF54O3vjbfDG18WXTm6d6O7TnSifKMK8wqQgilZBfgqFEA14Gbzo27EvfTv2Pee9ClMFeZV55FbmkluZS0FlAYXVhRRWFVJQVUBhVSEHiw6y5ugaamqttzNz0jjR1bsrPXx6EO4VjovOBb1Gj16rx0njhF6jx6A14GnwxGgw4u3sjavOVQ6limYnBU8I0Wiuelc66zvT2fPiF6Gba81kFWexp3APe/L3sKdwDz8f+Zni6uJGfY+TxgmjsxFvgzdUwvK1y/F18cXH2Qdf57pl3WsfZ5+m3cNUOBwpeEKIZqfT6Ij0jiTSO5KREdYLz1VVpdRUSo2lpv5hqjVRU2t9XlxdTGFVIUXVRfW9xsKqQg6XHyYjN4OCqgIqzOe/qNxV52otfi4+9ecVvZy8MDob8XTyxMvghZfBC1edq3XgTt1Dr+itS621l+msc0YvoyLbLSl4QogWoSgKnk6el/251NRUEhMTAag0V9YfPs2vzLcuq6zL0+uOlx1nd/5uSqpLqLJUXXzn56FVtDjrnDFoDbjoXHDRueCqd8VN52Zd6t2s63Su9YXy9AwaThrrjBp6rd562FZTV1Drnp8924aTpuHMG3LJiO1JwRNCtBkuOhdc3F0aPT9hlbmKkpoSiqqLKK4uptJcibnWfOahWpcmi4kqSxVVZuuI1kpzZf2y0lxJuamccnM5uZW5VJgqqDBX1I+CVVGbpW1aRXtmCiqNtRCaq810KelCiOdlTjoszksKnhCi3XLWOeOscybANcAm+1dVFXOt2TptVN2h2WpLtbWI1powWUzWZd2jxlLTYLvTh3arLFWYLKYz6+u2yT6RLecnm5EUPCGEaCJFUayHLy9jbsPLkZqair+rv0327Yg09g4ghBBCtAQpeEIIIRyCFDwhhBAOQQqeEEIIhyAFTwghhEOQgieEEMIhSMETQgjhEKTgCSGEcAiKqqrNc18cG/Lz8yMsLIzc3Fz8/R33IkxHbr8jtx0cu/3S9qa3PSsri7y8vGZM1La1iYJ3Wt++fUlLS7N3DLtx5PY7ctvBsdsvbXfMttuCHNIUQgjhEKTgCSGEcAjaZ5999ll7h7gcCQkJ9o5gV47cfkduOzh2+6Xtojm0qXN4QgghRFPJIU0hhBAOQQqeEEIIh9BmCt6KFSvo3r07kZGRzJo1y95xbO7ee+8lICCAnj171q8rKChgxIgRdO3alREjRlBYWGjHhLZz9OhRkpKSiI6OJiYmhjlz5gCO0f6qqiquuuoq4uLiiImJ4ZlnngEgMzOT/v37ExkZycSJE6mpqbFzUtuxWCz07t2bkSNHAo7V9rCwMHr16kV8fDx9+/YFHOPnvqW0iYJnsVj429/+xvLly9m9ezcLFixg9+7d9o5lU3fffTcrVqxosG7WrFkkJyezf/9+kpOT223h1+l0vP766+zevZtNmzbx7rvvsnv3bodov8FgICUlhfT0dHbs2MGKFSvYtGkTM2bM4OGHH+bAgQN4e3vz4Ycf2juqzcyZM4eoqKj6147UdoDVq1ezY8eO+uvvHOHnvsWobcCGDRvUa6+9tv71yy+/rL788st2TNQyMjMz1ZiYmPrX3bp1U48fP66qqqoeP35c7datm72itahRo0apP/30k8O1v7y8XO3du7e6adMm1dfXVzWZTKqqnvv70J4cPXpUHT58uLpq1Sr1pptuUmtrax2m7aqqqqGhoWpubm6DdY72c29LbaKHd+zYMUJCQupfBwcHc+zYMTsmso+TJ08SGBgIQMeOHTl58qSdE9leVlYWv/76K/3793eY9lssFuLj4wkICGDEiBF06dIFo9GITqcD2vfP/9SpU5k9ezYajfVPU35+vsO0HUBRFK699loSEhKYO3cu4Ji/97ais3cA0TSKoqAoir1j2FRZWRm33HILb731Fp6eng3ea8/t12q17Nixg6KiIsaOHcuePXvsHalFLFu2jICAABISEkhNTbV3HLtYt24dQUFBnDp1ihEjRtCjR48G77fnn/uW0CYKXlBQEEePHq1/nZ2dTVBQkB0T2UeHDh3IyckhMDCQnJwcAgIC7B3JZkwmE7fccgt33HEH48aNAxyr/QBGo5GkpCQ2btxIUVERZrMZnU7Xbn/+169fz7fffssPP/xAVVUVzDdQIQAABMVJREFUJSUlTJkyxSHaftrptgUEBDB27Fi2bNnicD/3ttQmDmn269eP/fv3k5mZSU1NDQsXLmTUqFH2jtXiRo0axfz58wGYP38+o0ePtnMi21BVlfvuu4+oqCgeeeSR+vWO0P7c3FyKiooAqKysZOXKlURFRZGUlMSXX34JtN+2v/LKK2RnZ5OVlcXChQsZPnw4n332mUO0HaD8/9u7l5A2tjgM4F8biyW+cFEqqIv6apvHzNQQDYIoVTQo9AFZKG4EodtuGsi2tHThQkEXKrgSWhBEXNSNCJFGVNpNshMlMRAQoQkSfAVM/N/FpXNvH17ubY3Se77fapJz5sw5w5CPmTDnHB3h4ODA3F5aWoLD4VDiur80V/0n4r+1uLgo9fX1UlNTI69fv77q7uRdX1+fVFRUSEFBgVRWVsr09LQkk0l5+PCh1NXVSUdHh6RSqavuZl6EQiEBIE6nU3RdF13XZXFxUYnxRyIRMQxDnE6n2O12efnypYiIRKNRcbvdUltbKz6fTzKZzBX3NL+CwaD09vaKiDpjj0ajommaaJomNpvN/J1T4bq/LJxajIiIlPBbPNIkIiL6VQw8IiJSAgOPiIiUwMAjIiIlMPCIiEgJDDz63ysuLgbw5zRl7969u9C237x589XnlpaWC22fiC4OA4+U8TOBl81m/7H828BbW1v7z/0iosvBwCNlBAIBhEIhGIaB0dFR5HI5+P1+uN1uaJqGqakpAMDKygpaW1vx6NEj2Gw2AMCTJ0/gcrlgt9vNSX0DgQBOTk5gGAYGBgYA/HU3KSLw+/1wOBxwOp2YnZ01225vb4fP58O9e/cwMDCAL6/CBgIB2Gw2aJqGFy9eXOq5IVLC1b73TpR/RUVFIvL17B0iIlNTU/Lq1SsREclkMuJyuSQWi0kwGBSr1SqxWMys+2V2i+PjY7Hb7ZJMJr9q+9tjzc3NSWdnp2SzWdnb25Pq6mrZ3d2VYDAopaWlkkgkJJfLicfjkVAoJMlkUhoaGuTs7ExERPb39/N0NojUxTs8UtbS0hJmZmZgGAaam5uRSqWwvb0NAGhqasKdO3fMumNjY9B1HR6PB4lEwqx3ntXVVfT398NiseD27dtoa2vDp0+fzLarqqpw/fp1GIaBeDyOsrIy3Lx5E0NDQ5ifn4fVas3fwIkUxcAjZYkIxsfHEQ6HEQ6HsbOzg66uLgBAUVGRWW9lZQXLy8tYX19HJBLBgwcPkMlkfvq4hYWF5rbFYjFXAvj48SN8Ph/ev38Pr9f78wMjoh9i4JEySkpKzNnoAaC7uxsTExM4PT0FAGxtbeHo6Oi7/dLpNMrLy2G1WrG5uYmNjQ2z7MaNG+b+f9fa2orZ2Vnkcjl8/vwZHz58QFNT07l9Ozw8RDqdRk9PD0ZHRxGJRH5lqET0A7/FenhEF0HTNFgsFui6jsHBQTx//hzxeByNjY0QEdy6dQsLCwvf7ef1ejE5OYn79+/j7t278Hg8ZtmzZ8+gaRoaGxvx9u1b8/unT59ifX0duq7j2rVrGB4eRkVFxbmLuR4cHODx48fIZDIQEYyMjFz8CSBSHFdLICIiJfCRJhERKYGBR0RESmDgERGREhh4RESkBAYeEREpgYFHRERKYOAREZES/gBWQDWOmt8ByAAAAABJRU5ErkJggg==\n",
            "text/plain": [
              "<IPython.core.display.Image object>"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 18
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "HYEl6buevixm",
        "colab_type": "text"
      },
      "source": [
        "<h4>Box Plot</h4>"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "rWF1AKS5bPvV",
        "colab_type": "code",
        "outputId": "9cdefbdf-8a8c-4a0f-cbae-3a0aba9528df",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 49,
          "referenced_widgets": [
            "91e278780d5b4dcda11e832e971044f3",
            "c1b161beed5c4b128b06a09d7a5be2fe",
            "b08d8ae9147047acac84d9e52bfee64f"
          ]
        }
      },
      "source": [
        "#Select boxplot to show\n",
        "filenames = [filename for filename in os.listdir(foldername) if filename.startswith('boxplot')]\n",
        "\n",
        "drop_boxplot = widgets.Dropdown(options=filenames, description='Select plot:')\n",
        "drop_boxplot"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "91e278780d5b4dcda11e832e971044f3",
              "version_minor": 0,
              "version_major": 2
            },
            "text/plain": [
              "Dropdown(description='Select plot:', options=('boxplot-F3.png', 'boxplot-F4.png'), value='boxplot-F3.png')"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "paBsvZRktfTh",
        "colab_type": "code",
        "outputId": "61ebf09e-07cc-4718-d273-0ed5e02766f6",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 265
        }
      },
      "source": [
        "#Show selected boxplot\n",
        "Image(foldername +'/' + drop_boxplot.value)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<IPython.core.display.Image object>"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 22
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "eahYmfKKJ62g",
        "colab_type": "text"
      },
      "source": [
        "<h2>Citation Request</h2>"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "PkabkcHFKFIK",
        "colab_type": "text"
      },
      "source": [
        "Please include these citations if you plan to use this Framework:\n",
        "\n",
        "*   Faris, Hossam, Ibrahim Aljarah, Seyedali Mirjalili, Pedro A. Castillo, and Juan Julián Merelo Guervós. \"EvoloPy: An Open-source Nature-inspired Optimization Framework in Python.\" In IJCCI (ECTA), pp. 171-177. 2016.\n",
        "*   Qaddoura, Raneem, Hossam Faris, Ibrahim Aljarah, and Pedro A. Castillo. \"EvoCluster: An Open-Source Nature-Inspired Optimization Clustering Framework in Python.\" In International Conference on the Applications of Evolutionary Computation (Part of EvoStar), pp. 20-36. Springer, Cham, 2020.\n",
        "*   Ruba Abu Khurma, Ibrahim Aljarah, Ahmad Sharieh, and Seyedali Mirjalili. Evolopy-fs: An open-source nature-inspired optimization framework in python for feature selection. In Evolutionary Machine Learning Techniques, pages 131–173. Springer, 2020"
      ]
    }
  ]
}